A restauração do sistema de arquivos usando tar faz com que o loop de login

1

Nota: Estou fazendo isso para aprender mais sobre o Linux. Eu entendo que existem outras ferramentas que podem ser usadas com interfaces simples.

Nota: Estou usando o Fedora 23. Eu o instalei fisicamente em um SSD e meu objetivo é movê-lo para uma máquina virtual.

Antes de usar o tar, usei com sucesso o rsync . Eu rsync meu sistema de arquivos inteiro diretamente em uma partição formatada com ext4 . Eu então configuro uma máquina virtual e inicializo com um liveCD, monto a partição e rsync os arquivos de volta. Depois disso, eu atualizo meu fstab , reinstalei o grub e gerei o arquivo de configuração do grub, e finalmente gerarei um novo initramfs usando dracut

Eu gostaria de usar o tar agora para poder armazenar backups do meu sistema em um único arquivo e tê-lo compactado.

Eu uso este comando para criar o tar: tar -czpf /path/to/backup.tar.gz /path/to/fs/

Observe que o caminho para o FS que estou arquivando são os mesmos arquivos que eu rsynced para um diretório temporário. Não inclui pastas como proc, dev, sys , etc.

E então eu inicializo a VM usando um livecd, monto as partições e, em seguida, uso este comando para extrair o tar como root user:

tar -xzpf /path/to/backup/file -C /path/to/new/partition

Quando eu atualizo os mesmos arquivos que fiz com o rsync, eu reinicio e chego à tela de login. No entanto, logar como root (usando tty) ou como meu usuário não funciona. Ele simplesmente me envia de volta para a tela de login - estou preso em um loop de login.

Descobri que, quando o tar extrai arquivos de propriedade de amoghrabi , ele substituirá o usuário como liveuser . Isso ocorre porque o tar usa o arquivo passwd do sistema de arquivos para corresponder aos usuários. Se não conseguir encontrar o nome do usuário, ele corresponderá por UID e GID .

Como uma possível solução, tentei atualizar o arquivo passwd e group do sistema ao vivo com os do meu sistema de arquivos original. Isso não funciona.

Eu li sobre o uso do sinalizador --same-owner , mas isso não funciona no meu caso porque o arquivo passwd do sistema de arquivos livecd não contém os usuários originais do sistema que estou restaurando.

Quais são as minhas opções aqui para restaurar meu sistema com sucesso, como fiz com o rsync?

EDITAR:

Para evitar confusões, eu estou inicializando de um liveCD e montando /dev/sda1 , a partição para a qual eu quero restaurar meu backup. Estou desmarcando o backup para essa partição e, em seguida, fazendo o cromato (ainda no ambiente do LiveCD) para modificar /etc/fstab , reinstalar grub e gerar novamente o arquivo initramfs . Depois que o processo de desatervar meu backup para /dev/sda1 é concluído, parece que amoghrabi , meu usuário em meu backup, não possui mais seus arquivos (por exemplo, /home/amoghrabi/ e, em vez disso, os arquivos pertencem a liveuser Eu acredito que isso é porque o arquivo /etc/passwd no LiveCD tem UID de 1000 , que é o mesmo UID para amoghrabi .

O que posso fazer neste caso? Eu já tentei restaurar meu arquivo /etc/passwd e /etc/group para o ambiente liveCD antes de desassociar meu backup. Isso corrigiu o problema em que o usuário amoghrabi home directory é de propriedade de amoghrabi , mas ainda fico preso em um loop de login que, acredito, é a causa de algo não ter as permissões corretas do processo de exclusão.

Meu objetivo final aqui é poder inicializar em /dev/sda1 e ter uma cópia de trabalho do meu sistema, com o uso de tar para armazenar meus backups.

    
por AMoghrabi 24.05.2016 / 03:17

2 respostas

0

Passe a opção --numeric-owner para tar ao fazer o arquivamento ou ao extraí-lo (ou ambos). Isso faz com que os arquivos sejam extraídos com os mesmos UIDs e GIDs em que foram arquivados, independentemente dos nomes de usuário no sistema em que você extrai. Como você está restaurando o banco de dados do usuário ao lado do restante, os arquivos acabarão sendo de propriedade do usuário correto no sistema restaurado.

Se você olhar para o seu backup restaurado a partir do live CD, é normal que os usuários apareçam com um nome diferente. O que identifica um usuário no sistema de arquivos é o ID do usuário numérico, não o nome do usuário. O ID do usuário de liveuser é o primeiro número no intervalo para usuários físicos; o ID do usuário de amoghrabi é presumivelmente o mesmo número, se este foi o primeiro usuário criado durante ou após a instalação. Eu acho que o Fedora começa no UID 500, então os arquivos em /home/amoghrabi são de propriedade do UID 500. Quando visto do live CD, o usuário 500 tem o nome liveuser . Quando visto do sistema original ou do sistema restaurado, o usuário 500 tem o nome amoghrabi .

Se você quiser usar o backup restaurado do live CD, precisará fazer um pouco mais do que chroot nele. Você precisa montar vários sistemas de arquivos (para ser feito como root fora do chroot):

mount --rbind /dev /media/sda1/dev
mount --rbind /proc /media/sda1/proc
mount --rbind /sys /media/sda1/sys
mount -t tmpfs tmpfs /media/sda1/run
mount -t tmpfs tmpfs /media/sda1/tmp

Em seguida, inicie um gerenciador de exibição no chroot se desejar executar uma sessão da GUI a partir de um login da GUI. Você pode precisar iniciar alguns serviços adicionais no chroot, não tenho certeza disso.

    
por 25.05.2016 / 02:14
0

Gostaria de saber se parte do problema é que tar não captura todos os arquivos especiais. Você já viu usando dd ?

    
por 12.01.2017 / 19:48