

Copia y restauración del file system completo con particiones y autoarrancable: He estado haciendo pruebas de copia y restauración de dispositivos de almacenamiento desde Mac OS X y me parecía que lo que estaba haciendo podía ser útil resumirlo para Linux ya que en caso de necesidad una buena distro en formato LiveCD puede salvarnos el pellejo si nos metemos en líos con el file system.
Voy a intentar dejarlo en la mínima expresión porque se supone que si estás leyendo esto es porque sabes de qué estoy hablando y, si no es así pero te resulta interesante, te invito a usar los comentarios para preguntar cualquier duda.
1.- Identificar los discos instalados
Rápido y fácil con el siguiente comando
fdisk -l /dev/[sh]d?
La salida nos mostrará los discos conectados, y no necesariamente montados, con información extendida acerca de los mismos. Necesitamos tener claro el dispositivo al que tenemos que agarrar por las orejas.
2.- Copia/Restauración del sistema
Para crear una copia de seguridad de un dispositivo de almacenamiento completo utilizaremos el siguiente comando:
dd if=/dev/sda of=ubuntu.img bs=262144
Se creará un archivo que contiene la imagen del disco llamado “ubuntu.img” sin comprimir del tamaño del dispositivo “sda”, debemos tener en cuenta el espacio necesario para ello. El archivo resultante contiene la información de arranque y tabla de particiones existentes.
Para restaurar una copia de seguridad que tengamos almacenada en una imagen de disco utilizaremos el siguiente comando:
dd if=ubuntu.img of=/dev/sdb bs=262144
Se restaurará el contenido del archivo “ubuntu.img” sobre el dispositivo “sdb” pero DESTRUYENDO EL CONTENIDO PREVIO DEL MISMO. Es por esto que debemos estar muy seguros de cual es el dispositivo destino de la restauración para que el remedio no sea peor que la enfermedad.
El comando “dd” no ofrece mucha información por defecto por lo que si queremos saber por dónde va el proceso y cuánto le queda para acabar podemos enviarle una señal mediante el siguiente comando:
kill -s SIGUSR1 3371 2>&1
Siendo 3371 el pid del proceso. De esta forma obligamos la redirección de la salida utilizada por el programa STDERR “2>” hacia STDOUT “&1” para poder ver los datos. Obtendremos la respuesta en el terminal que ocupe el comando “dd” y podemos repetirlo en todas las ocasiones que estimemos necesarias.
Nota: hay que tener en cuenta el tamaño del bloque “bs” porque tanto si es demasiado pequeño como si es demasiado grande no lograremos una velocidad de transferencia óptima y este tamaño depende directamente del dispositivo. En las pruebas que hice, un tanto a ciegas porque aún no he averiguado cómo calcular este dato exactamente, usando un tamaño de 131072 bytes la velocidad de transferencia fue 4 veces menos a la obtenida con un tamaño de bloque de 262144, justo el doble.