Necesito transferir un sistema de archivos raíz de Linux completo de un disco duro defectuoso a otra computadora con una partición abierta y disponible. Estoy bastante seguro de que esto implica tar
y ssh
, pero no puedo recordar exactamente cómo hacerlo.
Probablemente estoy imaginando un CD en vivo en el host nuevo / objetivo para ejecutar algo como esto:
ssh user@failingharddrivehost "some tar command | piped into something else"
ssh user@failingsys "tar cfz - /" > oldsys.tar.gz
Respuestas:
Use rsync. Desde el nuevo host, puede usar
rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/
No intentaría involucrar algo como tar porque probablemente no funcionará cuando haya archivos rotos.
fuente
Si ambas computadoras están en la misma LAN (segura), recomiendo usar un enfoque diferente
netcat
. Esto suele ser mucho más rápido ya que no cifra los datos.que abre un puerto de escucha 1234 en la buena máquina
netcat -l -p 1234
y canaliza los datos entrantestar
para extraer (preservando mtime y permisos). El host incorrecto envía los datos a este puerto, también usandotar
ynetcat
. I incluido algunos--exclude
parámetros, como/proc
y/sys
son sistemas de archivos virtuales y por lo tanto inútil en el nuevo host. (especialmente el archivo que representa su RAM en (/proc/kcore
) agregará una cantidad innecesaria de datos).Sin embargo, debería (también) considerar hacer un
dd
volcado de las particiones de la unidad que falla:donde tuvo que adoptar
/dev/sda1
el dispositivo correcto. Haga eso también con otras particiones en la unidad que falla.Con ese volcado, está seguro de que no se perdió ningún metadato importante (como las ACL) que
tar
no capturará.fuente
¿Por qué se combina con el directorio excluyente? ¿No es mejor idea montar el mismo dispositivo en otro directorio? Los núcleos modernos lo permiten de esta manera. por ejemplo, has montado
/ dev / sda1 como / then do: mkdir / CLEANROOT mount / dev / sda1 / CLEANROOT
después de esto tienes: / dev / sda1 como / / dev / sda1 como / CLEANROOT
Este es el mismo sistema de archivos visible con dos lugares, pero / CLEANROOT no tiene montajes aditivos. Luego puede tar o rsync / CLEANROOT sin exclusiones en lugar de copiar / con exclusiones.
Por supuesto, debe copiar otras particiones de datos cuando tenga algunas.
Copiar la partición es el primer paso para la recuperación del servidor. otro es regenerar sectores de arranque, de lo contrario el sistema no arrancará desde el disco copiado. Es útil el modo de rescate cuando arranca desde el CD de instalación / rescate o pendrive.
fuente
¿Tiene acceso físico al host que falla?
Si lo hace, arranque desde un CD en vivo. Luego use:
El excluyen sintaxis es:
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
Si no puede iniciar desde un CD en vivo, algunas de las soluciones anteriores seguirán siendo las mismas, pero:
P.ej
tar --exclude='/dev' --exclude='/proc'
fuente
#mount /dev/sda1 /mnt/fedora
mount: unknown filesystem type 'LVM2_member'
Aquí hay una descripción de cómo copiar archivos usando
tar
yssh
. Básicamente, ejecutaría uno de los siguientes, dependiendo de si desea copiar local -> remoto o remoto -> local:fuente
deberías considerar usar rsync
El siguiente comando supone 2 cosas:
rsync / new_partition:/wherever/you/want/
Nota: el final / es importante, de lo contrario sus archivos terminarán en un nivel de directorio superior
fuente
-a
parámetro (y quizás el-A
), ya que conserva los tiempos, la propiedad, los enlaces simbólicos (y quizás los ACL), etc. y el-e ssh
parámetro, ya que los datos deben transferirse a otra computadora. Entoncesrsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint