dd, clonado y restauración de discos duros

En las entradas relacionadas con el clonado de discos, hay que hacer mención especial al comando dd (database definition).

dd es un comando de la familia de los sistemas operativos Unix que permite copiar y convertir datos de archivos a bajo nivel. En Arch Linux y derivadas es parte del proyecto GNU, coreutils.

dd, es una herramienta sencilla, versátil y muy potente. Se puede utilizar para copiar de origen a destino, bloque por bloque, independientemente de sus tipos de sistema de archivos o sistemas operativos.

El método más recomendable para utilizar dd es un entorno live cd o usb. Para clonar disco duros o particiones, este entorno live, será obligatorio.

Este es un taller de pruebas que llevo realizando desde hace unos días, en un entorno live y a la vez virtualizado. Las capturas de pantalla corresponden a ese entorno de pruebas, en el que utilicé una iso de una derivada de Arch Linux y el live cd de Systemrescuecd, como entornos live, sobre disco duros virtuales, a la vez que también un USB.

Clonación y restauración de discos

En esta sección vamos a clonar un disco entero sda a otro disco, sdb, directamente. En esta prueba, creé la tabla de particiones con gparted, desconocía si era o no necesario crearla, por lógica me parece que sí, por lo tanto realicé la tabla. No es necesario darle formato.


Desde el disco /dev/sda al disco /dev/sdb:

# dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress

Si sólo necesitas clonar una partición

Desde el disco físico /dev/sda, partición 1, a disco físico /dev/sdb, partición 1:

# dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress

Crear una imagen de disco

A continuación vamos a crear una imagen comprimida del disco sda, y la alojaremos en cualquier tipo de medio, en este caso otro disco duro, para luego poder restaurarla. Arrancando desde un live CD o live USB. El disco de origen sda, debe estar desmontado:

# dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c  > /path/to/backup.img.gz status=progress

Si el destino está en formato FAT32, como por ejemplo un USB o un HDD externo, hay que dividir la imagen de disco en volúmenes.

# dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c | split -a3 -b2G - /path/to/backup.img.gz

Este método no es muy recomendable si vas a alojarla un USB, a no ser que estés muy seguro de que el archivo resultante va a ser de un tamaño inferior de la capacidad del mismo. Si queréis tener una referencia, un disco de unos 25 GB, lo a comprimido en un archivo de 5 GB .

Restaurar sistema

Para restaurar el sistema a partir de la imagen creada, hay que efectuar dos pasos :

# gunzip -c /path/to/backup.img.gz | dd of=/dev/sda status=progress

Cuando haya finalizado:

# cat /path/to/backup.img.gz* | gunzip -c | dd of=/dev/sda status=progress

Imagen alojada en un medio extraible

Si tenemos la imagen en un USB, HDD extraible, o cualquier otro tipo de medio, debemos montar el dispositivo y efectuar la misma operación:


Copia de seguridad y restauración MBR

Antes de realizar cambios en un disco, es recomendable realizar una copia de seguridad de la tabla de particiones y el esquema de particiones de la unidad. También se puede utilizar una copia de seguridad para copiar el mismo diseño de partición en varías unidades.

El MBR se almacena en los primeros 512 bytes del disco. Consta de 4 partes:

  • Los primeros 440 bytes contienen el código de arranque (boot loader).
  • Los siguientes 6 bytes contienen la firma del disco.
  • Los siguientes 64 bytes contienen la tabla de particiones (4 entradas de 16 bytes cada una, una entrada para cada partición primaria).
  • Los últimos 2 bytes contienen una firma de arranque.

Para guardar el MBR como mbr_file.img:

# dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1

También se puede extraer el MBR de una imagen de disco :

# dd if=/path/to/disk.img of=/path/to/mbr_file.img bs=512 count=1

Para restaurar (cuidado, esto destruye la tabla de particiones existente y con ella el acceso a todos los datos en el disco):

# dd if=/path/to/mbr_file.img of=/dev/sdX bs=512 count=1

Si quieres solo restablecer el cargador de arranque, pero no las entradas de la tabla de la partición primaria, solo restaura los primeros 440 bytes del MBR:

# dd if=/path/to/mbr_file.img of=/dev/sdX bs=440 count=1

Para restaurar solo la tabla de particiones, se debe utilizar:

# dd if=/path/to/mbr_file.img of=/dev/sdX bs=1 skip=446 count=64

Para borrar el código de arranque MBR (puede ser útil si tienes que hacer una reinstalación completa de otro sistema operativo) sólo los primeros 440 bytes deben ser a cero:

# dd if=/dev/zero of=/dev/sdX bs=440 count=1

Fuente.

Impactos: 106

4 comentarios sobre “dd, clonado y restauración de discos duros”

  1. Excelente tutorial, pero como lo vea un novato seguro que sale de tu blog (es broma) con el tiempo que llevo en Gnu/Linux nunca me he atrevido a utilizar ” dd ” por miedo a mi cabeza loca, prefiero Clonezilla o Refracta.

    1. Gracias Miguel !! yo tampoco había tirado de dd, siempre he utilizado clonezilla y más recientemente Redo Backup and Recovery por su increíble sencillez, pero es bueno conocer otras opciones y dd es de una potencia increíble. Por temor no he hecho pruebas físicas reales, todo en forma virtual, pero pronto haré las pruebas reales !!! 😉

  2. Muy buena información, gracias por compartirla. Tengo un cd con música en mp3 que no se puede abrir en windows y lo estoy usando para probar el comando dd con la opción conv=noerror,sync, pero el tiempo que tarda es una eternidad, no llega ni a 1Mb copiado por hora. Es frustrante tal lentitud porque mi meta realmente es hacer una imagen de un disco duro de 1Tb dañado, para intentar recuperar desde ahí mis datos. ¿Cuanto puede tardar? Suponiendo que el disco de 1Tb tenga algunos sectores dañados y deba usar la opción conv=noerror,sync.

    1. Hola César, gracias.

      Para esos casos creo que es mejor dd_rescue o dd_rhelp, al menos dicen que es más rápido, pero no los he utilizado nunca. El tiempo para 1 TB, sinceramente no tengo ni idea, también depende de muchas factores, es difícil saberlo, pero será más rápido que un cd.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *