5 jun. 2014

Clonación de discos con el comando 'dd'

Bueno, aquí está mi primer post sobre Linux, se trata de como usar el comando dd, bueno, sin más presentación aquí os lo dejo.


El comando dd (Dataset Definition), es una herramienta en principio creada para sistemas Unix pero hoy en día evolucionada hasta el punto de poder hacer lo mismo que buenos programas comerciales como Norton Ghost o libres como CloneZilla, con sólo una pequeña orden en la línea de comandos.

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

Sintaxis
La sintaxis más básica, sería (suponiendo que estamos como root):

dd if=origen of=destino

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.

Parámetros

Algunos de los parámetros básicos usados por este comando serían:

if=origen: Lee desde el archivo indicado como origen. Por defecto lee de la entrada estándar

of=destino: Escribe al archivo indicado como destino. Por defecto escribe en la salida estándar
ibs=N: Lee N bytes del archivo origen
bs=N: Lee y escribe N bytes. Alternativa a usar ibs y obs con un mismo valor
conv=modo[, modo,...]: Realiza las operaciones de conversión, según se indique. Se puede indicar más de una conversión, separándolas por comas
Algunas conversiones útiles son:
noerror: sirve para obviar los errores de lectura en cualquier situación
sync: rellena cada bloque leído con ceros, hasta el tamaño determinado por ibs
notrunc: no se trunca el archivo utilizado como destino.

Ejemplo

Un ejemplo básico para copiar un disco a otro sería bit a bit:

dd if=/dev/sda1 of=/media/sdb1/imagen/backup.img conv=sync, notrunc, noerror bs=512

Para comprobar que la imagen es exacta, utilizaríamos el comando md5sum
Ejemplo:
md5sum /dev/sda (nos daría un código)
md5sum /media/sdb1/imagen/backup.img (nos da otro código, que tiene que ser exacto al anterior para que la copia sea exacta bit a bit)

Trucos

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

4 comentarios :

  1. Respuestas
    1. Oks, aunque tu eres de los míos, Linux poco... jajajaja

      Eliminar
  2. Mmm, interesante... tengo que probarlo en el curro con algún disco que tenemos 'chof'

    ResponderEliminar
    Respuestas
    1. Gracias por el comentario y más a esas horas.... Te aseguro que funciona, lo probé

      Eliminar