systemadmin.es > Utilidades > Uso de dd: Herramientas UNIX (IV)

Uso de dd: Herramientas UNIX (IV)

dd es una herramienta realmente útil para la creación, copia o eliminación de datos. Vamos a ver unos ejemplos de como usarla:

Esta herramienta usa una sintaxis del estilo opción=valor. Vamos a ver las tres opciones básicas:

  • if (input file): Especificamos el fichero de origen. Si este parámetro no se define se toma el stdin por defecto.
  • of (output file): Especificamos el fichero destino. Si este parámetro no se define se toma el stdout por defecto.
  • bs (block size): Especifica el tamaño del bloque, en bytes.

Vamos a ver unos ejemplos clonando /dev/sda3 a un fichero llamado /var/img/sda3.img. Primero lo hacemos con un bs=1024:

# dd if=/dev/sda3 of=/var/img/sda3.img bs=1024
104422+1 records in
104422+1 records out
106928640 bytes (107 MB) copied, 0.633776 seconds, 169 MB/s

A continuación podemos probar lo mismo con un bs superior (1024k):

# dd if=/dev/sda3 of=/var/img/sda3.img bs=1024k
101+1 records in
101+1 records out
106928640 bytes (107 MB) copied, 0.216083 seconds, 495 MB/s

Vemos como dependiendo del bs la copia se realiza a más o menos velocidad.

Dependiendo del sistema y del entorno hay un parámetro bs que da el mayor rendimiento por una simple razón: No es lo mismo un disco FC que uno IDE.

Otra opción interesante es el parámetro count, mediante el cual podemos crear imagenes de un determinado tamaño, teniendo en consideración que el count de hace referente al número de bloques.

Por ejemplo, si queremos crear una imagen de 1MB lo podemos hacer combinando los valores bs=1024 y count=1024:

# dd if=/dev/zero of=/tmp/imagen.zero bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00582365 seconds, 180 MB/s

O cualquier otra combinación:

# dd if=/dev/zero of=/tmp/imagen.zero bs=1 count=$(echo 1024*1024 | bc)
1048576+0 records in
1048576+0 records out
1048576 bytes (1.0 MB) copied, 2.5499 seconds, 411 kB/s
Evidentemente esta herramienta da mucho juego combinándola con netcat podemos clonar discos por red. Por ejemplo, en la máquina destino podemos a escuchar a netcat con un dd al destino:
# netcat -l -p 1111 | dd of=/dev/sdb bs=1024k

Y en la máquina origen empezamos a mandar los datos:

dd if=/dev/sdd bs=1024k | netcat 192.168.1.11 1111

4 comments to “Uso de dd: Herramientas UNIX (IV)”

  1. Esto… una pregunta tonta…

    Sobre la parte final del post. ¿Si el netcat se pone a escuchar en el puerto 1111 la máquina origen no tendría que mandar los datos a ese puerto en vez de hacerlo al 1234? 😛

    Es una chorrada, por lo demás me parece un conjunto de post bastante interesantes, concretos, concisos y claros, seguid así.

    Un saludo.

  2. Mil perdones 😛

  3. Gracias se me habia olvidado estructura del comando muy bueno para hacer clonadas de hd completos!!! gracias!!

  4. Hola

    Un gran aporte, gracias por la información, muy bien explicado.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>