El comando dd está considerado como una de las utilidades más potentes de Linux. Aunque el significado de estas letras es Data Definition, la doble «D» hace que comúnmente reciba nombres tan llamativos como es «destructor de discos» o «duplicador de discos». En realidad, se trata de una herramienta de copia y conversión de datos a nivel de bloques, aunque tiene más utilidades.
En este artículo vamos a repasar todos los aspectos del comando dd que cualquier usuario de Linux debería conocer, desde su sintaxis básica hasta sus aplicaciones más destacadas, enter las que figuran la copia de archivos, la copia de seguridad y restauración de particiones de discos o la creación de unidades USB de arranque.
Hay que decir que el comando dd debe ser utilizado con mucha precaución. Si se usa sin realizar las necesarias verificaciones, puede acabar provocando una pérdida de datos irreversible. Por esa razón hay que prestar a máxima atención cuando se trabaja con él.
Sintaxis del comando dd
Entre las opciones más comunes dentro de la sintaxis del comando dd, hay que destacar las siguientes:
- bs=: Para determinar el tamaño del bloque que dd leerá o escribirá (por ejemplo, bs=4M).
- conv=: Para especificar las opciones de conversión.
- count=: Para establecer el número de bloques que dd va a copiar.
- if=: Archivo o dispositivo de entrada (input file).
- of=: Archivo o dispositivo de salida (output file).
- seek=: Para saltarse una cantidad específica de bloques o bytes mientras se lee el archivo de salida.
- skip=: Para saltarse una cantidad específica de bloques o bytes mientras se lee el archivo de entrada.
- status=progress: Para mostrar el progreso de la operación en tiempo real.
Usos prácticos del comando dd
Veamos algunas aplicaciones más prácticas del comando dd y cómo trabajar en ellas. Solo se trata de algunos ejemplos de uso común, ya que sus posibilidades reales son mucho más amplias:
Crear imágenes de disco
Este es uno de los usos más frecuentes del comando dd: la creación de imágenes de discos o particiones, lo cual se realiza copiando bit a bit su contenido. Muy útil para crear copias de seguridad. En el siguiente ejemplo, el dispositivo de origen es origen.txt y el de destino, destino.txt.
sudo dd if=/origen.txt of=/destino.txt
Clonar discos
Es decir, copiar el contenido completo de un disco y guardarlo en otra ubicación. Un ejemplo: para copiar todo el contenido del disco sda1 a sda2, hay que usar el comando del siguiente modo:
sudo dd if=/sda1 of=/sda2
Crear una unidad USB de arranque
Otro uso habitual del comando dd es el de la creación de unidades USB de arranque a partir de imágenes ISO. Para esto, es necesario especificar el archivo ISO como archivo de entrada (if) y la unidad USB como archivo de salida (of). Allá va otro ejemplo:
sudo dd if=linux_x.iso of=/dev/sda bs=3M status=progress
En este caso, linux_x.iso representa la imagen ISO de la distribución de Linux, mientras que /dev/sda es la unidad USB. Por otra parte, bs=3M nos informa del tamaño del bloque (3 megabytes), mientras que status=progress muestra el progreso del comando. Algunas veces, dicho progreso se visualiza con la imagen de una barra.
Saltar bytes o caracteres al leer el archivo de entrada
He aquí un ejemplo del uso de la utilidad skip: la de omitir una cantidad específica de bytes o caracteres en el momento de leer el archivo de entrada. Se usa cuando es necesario excluir ciertas partes del archivo. En este ejemplo, los primeros 200 bits:
sudo dd if=abc.txt of=zyx.txt skip=200
Borrar un dispositivo de bloque
Por último, un recurso que resulta muy conveniente en ciertas situaciones. Por ejemplo, cuando tenemos que vender o pasar un disco a alguien y queremos asegurarnos de que su contenido anterior es completamente inaccesible. Cuestión de privacidad. Esta operación se ejecuta a través de dos comandos, tal y como ilustramos en este ejemplo:
sudo dd if=/dev/zero bs=1M of=/dev/sda
Este primer paso reduce los datos existentes en el dispositivo a una simple secuencia de ceros. Para que la operación sea completa, hay que rellenar el resto del disco con datos aleatorios:
sudo dd if=/dev/random bs=1M of=/dev/sda
Conclusión
En definitiva, podemos afirmar que el comando dd es una herramienta esencial en Linux cuando se trata de relacionadas con copiar, clonar y convertir datos a bajo nivel. Entre otras muchas cosas, se usa para la creación de imágenes de disco o la limpieza segura de discos, como hemos visto.
Otras de sus aplicaciones prácticas son la de comprimir los datos leídos por el comando dd, copiar contenido desde un CD o DVD, realizar copias de seguridad parciales o totales, convertir mayúsculas a minúsculas o viceversa, etc. Sin duda, vale la pena aprender a usar este comando.
En todo caso, es un arma poderosa que hay que saber manejar con mucha precisión y cuidado, ya que puede sobreescribir e incluso borrar datos sin previo aviso.
Redactor especializado en temas de tecnología e internet con más de diez años de experiencia en diferentes medios digitales. He trabajado como editor y creador de contenidos para empresas de comercio electrónico, comunicación, marketing online y publicidad. También he escrito en webs de economía, finanzas y otros sectores. Mi trabajo es también mi pasión. Ahora, a través de mis artículos en Tecnobits, intento explorar todas las novedades y nuevas oportunidades que el mundo de la tecnología nos ofrece día a día para mejorar nuestras vidas.