Preciso transferir todo um sistema de arquivos raiz linux de um disco rígido com falha para outro computador com uma partição aberta e disponível. Tenho certeza de que isso envolve tar
e ssh
, mas não me lembro exatamente como fazer isso.
Estou imaginando provavelmente usando um CD ao vivo no novo host / destino para executar algo como isto:
ssh user@failingharddrivehost "some tar command | piped into something else"
ssh user@failingsys "tar cfz - /" > oldsys.tar.gz
Respostas:
Use rsync. No novo host, você pode usar
rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/
Eu não tentaria envolver algo como tar, porque provavelmente não funcionará quando houver arquivos quebrados.
fonte
Se os dois computadores estiverem na mesma LAN (segura), recomendo uma abordagem diferente
netcat
. Isso geralmente é muito mais rápido, pois não criptografa os dados.que abre uma porta de escuta 1234 na boa máquina
netcat -l -p 1234
e canaliza os dados recebidostar
para extrair (preservando mtime e permissões). O host incorreto envia os dados para esta porta, também usandotar
enetcat
. Incluí alguns--exclude
parâmetros, como/proc
e/sys
são sistemas de arquivos virtuais e, portanto, inúteis no novo host. (especialmente o arquivo que representa sua RAM em (/proc/kcore
) adicionará uma quantidade desnecessária de dados).No entanto, você deve (também) considerar fazer um
dd
despejo das partições da unidade com falha:onde você tinha que adotar
/dev/sda1
o dispositivo certo. Faça isso com outras partições na unidade com falha também.Com esse despejo, você tem certeza de que não perdeu nenhum metadado importante (como ACLs) que
tar
não será capturado.fonte
Por que você combina com exclusão de diretório? Não é melhor montar o mesmo dispositivo em outro diretório? kernels modernos permitem assim. por exemplo, você montou
/ dev / sda1 como / então faça: mkdir / montagem CLEANROOT / dev / sda1 / CLEANROOT
Depois disso, você terá: / dev / sda1 como / / dev / sda1 como / CLEANROOT
Este é o mesmo sistema de arquivos visível em dois locais, mas / CLEANROOT não possui montagens adicionais. Em seguida, você pode tar ou rsync / CLEANROOT sem nenhuma exclusão, em vez de copiar / com exclusões.
Claro que você deve copiar outras partições de dados quando tiver alguma.
A cópia da partição é o primeiro passo para a recuperação do servidor. outro é regenerar setores de inicialização; caso contrário, o sistema não inicializa a partir do disco copiado. Útil é o modo de recuperação quando você inicializa a partir do CD de instalação / resgate ou pendrive.
fonte
Você tem acesso físico ao host com falha?
Se você o fizer, inicialize a partir de um CD ao vivo. Então use:
O excluir sintaxe é:
tar --exclude='/dev'
.rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination
Se você não conseguir inicializar a partir de um CD ao vivo, algumas das soluções acima permanecerão as mesmas, mas:
Por exemplo
tar --exclude='/dev' --exclude='/proc'
fonte
#mount /dev/sda1 /mnt/fedora
mount: unknown filesystem type 'LVM2_member'
Aqui está uma descrição de como copiar arquivos usando
tar
essh
. Basicamente, você executaria um dos seguintes, dependendo se deseja copiar local -> remoto ou remoto -> local:fonte
você deve considerar o uso do rsync
o comando a seguir assume duas coisas:
rsync / new_partition:/wherever/you/want/
Nota: o final / é importante, caso contrário, seus arquivos terminarão em um nível de diretório acima
fonte
-a
parâmetro (e talvez o-A
), pois preserva horários, propriedade, links simbólicos (e talvez ACLs) etc. e o-e ssh
parâmetro, pois os dados devem ser transferidos para outro computador. Entãorsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint