','

' ); } ?>

Clonar discos duros e imágenes con DD

Lo primero siempre es tener claro el disco duro de origen y el de destino, algo que averiguamos fácilmente con el comando (como root) fdisk -l.

La sintaxis más básica, sería ésta [como root]:

dd if=[origen] of=[destino]

Por lo que si quisiéramos clonar un disco duro:

dd if=/dev/hda of=/dev/hdb bs=1M con esto clonaríamos el disco hda en hdb. (discos IDE)

O:

dd if=/dev/sda of=/dev/sdb bs=1M para discos SATA

Con  bs=1M, estamos diciendo que tanto la lectura como la escritura se haga en bloques de 1 megabyte (menos, sería más lento pero más seguro, y con más nos arriesgamos a perder datos por el camino).

Hay que tener en cuenta que de esta forma grabarás el disco “tal cual”, MBR, tabla de particiones, espacio vacío, etc., por lo que sólo podrás grabar en un disco del mismo o mayor tamaño.

Hacer un Backup comprimido del dispositivo

dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c  > /mnt/sdb1/hda.img.gz

«dd» es el comando para hacer una copia bit a bit, donde «if=/dev/hda» es el «fichero» de entrada y «of=/mnt/sdb1/hda.img.gz» es el «fichero» de salida. Todos los «ficheros» de salida deben tener un nombre, en este lo llamamos «hda.img.gz». «conv=sync,noerror» indica a dd que no debe leer los blocks que puedan tener errores, escribiendo así siempre la longitud correcta. Siempre que su disco duro no presente errores, recuerda que dd leerá cada bloque de datos simple, incluyendo cualquier bloques que el sistema operativo evita usar porque los ha marcado como malos. «bs=64K» es el tamaño del bloque de 64×1024 Bytes. Usando este gran tamaño de bloque se acelera el proceso de copia. La salida de dd es pipeada para ser comprimida con gzip.

Restaurar el sistema de una imagen comprimida con dd:

gunzip -c /mnt/sdb1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K

Otros ejemplos prácticos del comando DD

Vamos a ver algunos ejemplos prácticos y opciones de este comando:

dd if=/dev/hda1 of=/dev/hdb bs=1M

Grabaríamos sólo la primera partición del disco de origen en el de destino.

dd if=/dev/hda of=/dev/hdb1 bs=1M

Grabaríamos el disco completo en la primera partición del disco de destino.

dd if=/dev/hda of=/home/hda.bin

Crear una imagen del disco duro, puede ser bin o iso (a partir de ahora utilizaré nuestro home como ejemplo). Como root:

dd if=/dev/hda | gzip > /home/hda.bin.gz

Crearíamos con el anterior comando una imagen del disco comprimida, (podemos utilizar gzip, bzip o bzip2.)

Crea una imagen de un CD:

dd if=/dev/cdrom of=/home/imagendeCD.iso

Para montar la imagen del CD:

mount -o loop imagedeCD.iso /mnt/home

Copiar el Master Boot Record:

dd if=/dev/hda of=mbr count=1 bs=512

Para restaurar el MBR:

dd if=mbr of=/dev/hda

Copiar el Volume Boot Sector (VBS):

dd if=/dev/hda of=/home/sector_arranque_hda count=1 bs=512

Para restaurar el VBS:

dd if=/home/sector_arranque_hda of=/dev/hda

Algunas curiosidades:

Recuperar un DVD rayado:

dd if=/dev/cdrom of=/home/dvd_recuperado.iso conv=noerror,sync

Esto no recupera todo el DVD, en este caso, sólo los sectores legibles. Sirve también para discos duros defectuosos.
La opción noerror sirve para obviar los errores de lectura en cualquier situación. Otro ejemplo sería:

dd conv=noerror if=/dev/hda of=~/home/imagen_disco_con_errores.iso

Grabaríamos con ello una imagen del disco duro en nuestro home saltándonos los errores del disco (muy útil para discos que se están muriendo).

Limpia nuestro MBR y la tabla de particiones:

dd if=/dev/zero of=/dev/hda bs=512 count=1

Limpia el MBR pero no toca la tabla de particiones (muy útil para borrar el GRUB sin perder datos en las particiones):

dd if=/dev/zero of=/dev/hda bs=446 count=1

Crea un archivo vacío de 1 Mb, una opción muy interesante como ahora veremos:

dd if=/dev/zero of=archivo_nuevo_vacio bs=1024 count=1024

Crear un archivo swap de 2Gb así de fácil:

sudo dd if=/dev/zero of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace

Al borde de la paranoia… Convierte todas las letras en mayúsculas:

dd if=miarchivo of=miarchivo conv=ucase

Cambia en todo el disco, la palabra Puigcorbe por Slqh, ( puedes cambiar rápidamente tu nombre a todos los archivos del disco):

dd if=/dev/sda | sed ‘s/Puigcorbe/Slqh/g’ | dd of=/dev/sda

Llena el disco con caracteres aleatorios cinco veces. No va a quedar ni rastro de información en el disco  :

for n in {1..5}; do dd if=/dev/urandom of=/dev/hda bs=8b conv=notrunc; done

(*) Nota final: utiliza este comando con precaución, y asegúrate siempre del orden y nombre de tus discos duros, porque lo mismo que te clona un disco te lo borra ‘en un plis’.