Linux dd – Copiar particiones

por | 5 junio, 2015

dd (Dataset Definition) es una de estas pequeñas grandes herramientas de Linux potente y sencilla de usar. dd permite clonar discos, sacar copias de seguridad de particiones, hacer borrados seguros, crear imágenes ISO de discos y CDs, etc. La potencia de dd radica en que copia en modo bruto, bit a bit.

Sintáxis:  dd if=origen of=destino

if = imput file
of= output file

origen y destino pueden ser discos duros, particiones, CDROM, archivos de imágenes, unidades USB, disqueteras, etc.

dd requiere privilegios de root para operar.

Ejemplos:

Clonar un disco hda en otro hdb:

# dd if=/dev/hda of=/dev/hdb

hdb deberá ser igual o mayor que hda. dd copia siempre en modo «imagen», es decir, se replican MBR, tabla de particiones, espacios vacios, etc.

Clonar una partición de disco hda1en otra partición de disco hdb1:

# dd if=/dev/hda1 of=/dev/hdb1

Clonar una partición de disco hda1 en un disco completo hdb

# dd if=/dev/hda1 of=/dev/hdb

Crear una imagen ISO de un disco duro hda:

# dd if=/dev/hda of=/tmp/imagen.ISO

Crea una imagen de disco sobre un archivo comprimido:

# dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c  > /tmp/sda.imagen.gz

Para restaurar la imagen anteriormente creada:

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

Crear una imagen ISO de un CDROM:

# dd if=/dev/cdrom of=/tmp/imagenCD.ISO

Nota: esta imagen, además de volverla a grabar a un CDROM, la podemos montar en un directorio, por ejemplo mount -o loop imageCD.ISO /media/

Restaurar un disco desde una imagen ISO:

# dd if=/tmp/imagen.ISO of=/dev/hdb

Copiar MBR:

# dd if=/dev/sda of=mbr count=1 bs=512

Restaurar MBR:

# dd if=mbr of=/dev/sda

Borra MBR:

# dd if=/dev/zero of=/dev/sda bs=446 count=1

Lo que se hace con dd para hacer borrados es utilizar como imput file, el dispositivo nulo /dev/zero.

Recuperar CDs y discos duros dañados:

# dd if=/dev/cdrom of=/tmp/imagenCD.iso conv=noerror,sync

Lo que se hace es utilizar la opción noerror que se salta los errores de lectura. Evidentemente los sectores dañados no se pueden recuperar, sólo el contenido legible.

Borrar partición sda1 de disco:

# dd if=/dev/zero of=/dev/sda1

Borrar el disco completo sda con todas sus particiones:

# dd if=/dev/zero of=/dev/sda

Eliminar la información total de un disco. Para ello lo que podemos hacer es utilizar dd para grabar datos aleatorios en el disco destino. Para mayor seguridad podemos hacer varias pasadas, tres en este ejemplo, sobre el disco:

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

Crear un archivo vacío de 1Mb:

# dd if=/dev/zero dd of=archivo bs=1024 count=1024

done bs fuerza lectura y escritura de 1024 bytes en cada comento y count forzamos a que se copie sólo 1024 bloques de entrada.

Convertir todas las letras en mayúsculas del fichero archivo:

# dd if=archivo of=archivo conv=ucase

Visualizando el progreso de dd

Una pega que tiene dd es que es un comando silencioso, no muestra por pantalla ninguna información de progreso. Si clonamos un disco estará un buen rato la pantalla con el cursor parpadeando sin que sepamos realmente si se está haciendo algo. Una manera de seguir el progreso de dd es utilizando una pipe con el comando pv, el cual mide los datos que pasan a través de la tubería y muestra estadísticas al final.

Ejemplo:

500MiB 0:03:06 [2,69MiB/s] [                  <=>                                                     ]
1024128+0 records in
1024128+0 records out
524353536 bytes (524 MB) copied1024128+0 records in
1024128+0 records out
524353536 bytes (524 MB) copied, 186,076 seconds, 2,8 MB/s
, 186,038 seconds, 2,8 MB/s
#

 El frontend gráfico Gdiskdump

Existe un frontend de gnome llamado gdiskdump, que permite el uso de dd gráficamente. Es muy intuitivo de usar.

 

Deja un comentario

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