Clonar, grabar discos y mas cosas, facilmente con dd

Clonar, grabar discos y mas cosas, facilmente con dd.

El comando dd (Dataset Definition), es una herramienta sencilla, útil, y sorprendente a la vez que desconocida. Esta herramienta fue creada a mediados de los 70 en principio para Unix, simplemente porque no existía. Pero al contrario que otras herramientas que desde su creación se han ido sofisticando, está se ha ido simplificando, hasta el punto de poder hacer lo mismo que buenos programas comerciales como Norton Ghost o libres como CloneZilla, con solo una pequeña linea de comandos.

Ni que decir tiene que toda la información de dd, la podéis consultar con el comando man dd e info dd, también dos grandes olvidados...

Al lio...

Lo primero siempre es tener claro el disco de origen y el de destino, algo que averiguamos fácilmente con el comando sudo fdisk -l

La sintaxis mas básica, seria esta:

sudo dd if=<origen> of=<destino>

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

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

sudo 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, seria mas lento pero mas seguro, y con mas nos arriesgamos a perder datos por el camino).
Hay que tener en cuenta que de esta forma grabaras el disco “tal cual”, MBR, tabla de particiones, espacio vacío, etc..., por lo que solo podrás grabar en un disco del mismo o mayor tamaño.

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

sudo dd if=/dev/hda1 of=/dev/hdb bs=1M Grabaríamos solo la primera partición del disco de origen en el de destino.

sudo dd if=/dev/hda of=/dev/hdb1 bs=1M Grabaríamos el disco completo en la primera partición del disco de destino.

sudo 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).

sudo dd if=/dev/hda | gzip > /home/hda.bin.gz Crear una imagen del disco comprimida, (podemos utilizar gzip, bzip o bzip2.)

sudo dd if=/dev/cdrom of=/home/imagendeCD.iso Crea una imagen de un CD

sudo mount -o loop imagedeCD.iso /mnt/home Para montar la imagen del CD

sudo dd if=/dev/hda of=mbr count=1 bs=512 Copiar el Master Boot Record (MBR)

sudo dd if=mbr of=/dev/hda Para restaurar el MBR

sudo dd if=/dev/hda of=/home/sector_arranque_hda count=1 bs=512 Copiar el Volume Boot Sector (VBS)

sudo dd if=/home/sector_arranque_hda of=/dev/hda Para restaurar el VBS.



Algunas curiosidades:

sudo dd if=/dev/cdrom of=/home/dvd_recuperado.iso conv=noerror,sync Recuperar un DVD rayado (Esto no recupera todo el DVD, en este caso, solo 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 seria:

sudo dd conv=noerror if=/dev/hda of=~/home/imagen_disco_con_errores.iso Grabaríamos una imagen del disco en nuestro home saltándonos los errores del disco (muy útil para discos que se están muriendo)

sudo dd if=/dev/zero of=/dev/hda bs=512 count=1 Limpia nuestro MBR y la tabla de particiones

sudo dd if=/dev/zero of=/dev/hda bs=446 count=1 Limpia el MBR pero no toca la tabla de particiones, ( muy útil para borrar el GRUB sin perder datos en las particiones)

sudo dd if=/dev/zero of=archivo_nuevo_vacio bs=1024 count=1024 Crea un archivo vacío de 1 Mb, una opción muy interesante como ahora veremos:

sudo dd if=/dev/zero of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace
Acabamos de crear un archivo swap de 2Gb así de fácil


Al borde de la paranoia:

sudo dd if=miarchivo of=miarchivo conv=ucase Convierte todas las letras en mayúsculas

sudo dd if=/dev/sda | sed 's/Puigcorbe/Slqh/g' | dd of=/dev/sda Cambia en todo el disco, la palabra Puigcorbe por Slqh, ( puedes cambiar rápidamente tu nombre a todos los archivos del disco)

for n in {1..5}; do dd if=/dev/urandom of=/dev/hda bs=8b conv=notrunc; done Llena el disco con caracteres aleatorios cinco veces. No va a quedar ni rastro de información en el disco :p

Nota final: Utiliza este comando con precaución, y asegurate siempre del orden y nombre de tus discos, porque lo mismo que te clona un disco te lo borra en un plis.




Fuentes: http://doc.ubuntu-es.org, y los consabidos man dd e info dd.
 
Que bien me va a venir esto.

Muchas gracias!!!!!!!
 
Gracias a ti Bron, si tenéis alguna pregunta no dudéis en consultarme que tengo el tema bien fresquito.

Saludos.
 
sudo dd if=/dev/cdrom of=/home/dvd_recuperado.iso conv=noerror,sync Recuperar un DVD rayado (Esto no recupera todo el DVD, en este caso, solo 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.

esa no la conocía, muy buena
a ver si encuentro un cd rayado para probarlo ;)

zenkiu
 
Arriba