Cómo usar el comando dd en Linux

dd es uno de los comandos más importantes en Linux, utilizado principalmente para hacer copias de seguridad de discos duros y particiones. Cuando se utiliza correctamente, dd puede ser una herramienta poderosa para escribir datos de una partición a otra y realizar diferentes tareas con archivos. Aquí te mostramos cómo aprovechar el comando dd.
Tabla de Contenidos
- La historia de dd
- Operandos básicos
- Creando una imagen de disco
- Guardando una imagen de disco en una partición
- Creando una imagen de disco comprimida
- Especificando un tamaño de bloque
- Borrando un disco duro
- Creando una unidad USB booteable
- Clonando particiones específicas usando dd
- Volcando el contenido de un CD usando dd
- Grabando el volcado ISO en un CD
- Preguntas frecuentes
También lee: 5 distribuciones de Arch Linux que son más fáciles de instalar y usar
La historia de dd
El comando fue desarrollado originalmente en los Laboratorios Bell de AT&T en la década de 1970 por un científico informático llamado Ken Thompson. Fue desarrollado para sistemas basados en Unix y se le dio un nombre que fue elegido como referencia a una declaración encontrada en el Lenguaje de Control de Trabajo de IBM, que se llamaba “DD”. Se puede notar que la sintaxis del comando se asemeja estrechamente a una declaración en el Lenguaje de Control de Trabajo.
El comando fue diseñado originalmente como una utilidad para convertir ASCII a EBCDIC y viceversa. Se integró por primera vez con una versión de Unix en 1974, con el lanzamiento de la 5ª edición del sistema operativo.
dd ha sido llamado “destructor de discos” como una broma en la comunidad de Unix debido a su capacidad para destruir datos en discos duros cuando se usa incorrectamente.
También lee: Cómo cifrar tus archivos en la nube usando Rclone
Operandos básicos
Ahora que sabes un poco sobre el trasfondo del comando y sus habilidades destructivas cuando se usa incorrectamente, es hora de aprender a aprovechar todo lo que ofrece a los usuarios de diferentes distribuciones de Linux.
Primero, consulta el manual usando la bandera --help:
dd --help
Hay dos operandos para el comando que se utilizan con mayor frecuencia. Son if y of, que significan “archivo de entrada” y “archivo de salida” respectivamente. El operando if se utiliza para representar la ubicación de origen, mientras que el operando of se utiliza para representar la ubicación donde pretendes guardar los datos de la ubicación de entrada.
dd if= of= Las ubicaciones de origen y salida más comunes incluyen discos duros, particiones e imágenes de disco.
Antes de usar el comando, puede ser útil utilizar la utilidad fdisk para ver las particiones en tu sistema. Esto se puede hacer fácilmente usando la bandera -l del comando:
sudo fdisk -l
También lee: 4 formas de clonar un disco duro completo en Linux
En este caso, if se utiliza para representar la unidad “/dev/sda”, y of representa la unidad “/dev/sdb”, donde los datos de “/dev/sda” se guardarán:
dd if=/dev/sda of=/dev/sdb
Creando una imagen de disco
Uno de los mejores casos de uso para el comando es crear imágenes de disco en el formato de archivo “.img”. Esto es extremadamente útil para hacer copias de seguridad de datos en tu sistema basado en Linux y es probablemente la forma más rápida y fácil de hacer una copia de seguridad de un disco duro completo.
La lógica aquí es principalmente la misma en este caso, con el operando if representando la unidad “/dev/sda” y el operando of representando un archivo “.img”, donde los datos del disco duro se guardarán:
dd if=/dev/sda of=/tmp/image.img
También lee: La guía definitiva para los comandos Apt y Apt-Get
Guardando una imagen de disco en una partición
Crear una imagen de disco con el comando es bastante sencillo, pero también lo es la versión inversa de ese proceso.
En este escenario, nuestro archivo de imagen de disco actúa como el archivo de entrada, y nuestra nueva partición actúa como el archivo de salida. La utilidad está guardando los datos de nuestra imagen de disco en nuestra partición “/dev/sdb”:
dd if=/tmp/image.img of=/dev/sdb
También lee: Cómo usar el comando ps en Linux para matar procesos
Creando una imagen de disco comprimida
Si creas una imagen de disco de un disco duro de tamaño completo, puedes imaginar que el tamaño del archivo de la imagen de disco final probablemente será bastante grande. Por esta razón, la utilidad dd tiene una característica que crea imágenes de disco comprimidas.
Una imagen de disco comprimida se puede crear utilizando el comando de tubería |. En este caso, se utiliza para tomar el contenido del archivo de entrada y realizar el comando gzip con una bandera -c, empaquetando el contenido en un archivo “.gz”:
dd if=/dev/sda | gzip -c > /tmp/image.gz
También lee: Cómo usar cURL para la transferencia de datos en la línea de comandos y más
Especificando un tamaño de bloque
También puedes jugar con la velocidad de la operación del comando dd. Esto se puede lograr utilizando el operando bs, que se utiliza para representar el tamaño del bloque. El tamaño del bloque representa el número de bytes que dd copia al archivo de salida en una sola instancia. Se representa utilizando múltiplos de 1024 bytes, y el valor predeterminado se establece en 512 bytes. Cuanto mayor sea el tamaño del bloque, más rápido se guardarán los datos en el archivo de salida.
En este caso, estamos estableciendo el tamaño del bloque en 2048:
dd if=/dev/sda of=/tmp/image.img bs=2048El tamaño del bloque también se puede especificar en kilobytes:
dd if=/dev/sda of=/tmp/image.img bs=2K
También lee: Cómo usar el comando lsof en Linux para listar archivos abiertos
Borrando un disco duro
dd también se puede usar para borrar tu disco duro. Esto se logra leyendo ceros o caracteres aleatorios de “/dev/zero” o “/dev/urandom” y guardándolos en el disco duro/partición, lo que sobrescribe los datos en él. Esto es extremadamente útil cuando quieres asegurarte de que tus datos no puedan ser recuperados fácilmente después de haber vendido o desechado tu disco duro.
Sobrescribiendo un disco duro usando ceros:
dd if=/dev/zero of=/dev/sdb
También puedes sobrescribir el dispositivo usando caracteres aleatorios:
dd if=/dev/urandom of=/dev/sdb
También lee: Cómo ejecutar comandos Bash en segundo plano en Linux
Creando una unidad USB booteable
La creación de unidades USB flash booteables usando archivos “.iso” con el comando es simple:
dd if=os.iso of=
Clonando particiones específicas usando dd
Otro uso brillante para dd es clonar particiones activas en tu sistema Linux. A diferencia de un archivo IMG, clonar permite crear una copia exacta de una partición particular y usarla de inmediato. Esto puede ser útil si tienes una configuración de múltiples discos y deseas crear particiones redundantes para tu sistema.
Para clonar la partición de “/dev/sda4” a “/dev/sdd1”.
dd if=/dev/sda4 of=/dev/sdb1 conv=noerror,syncEl parámetro conv te permite incluir opciones adicionales para modificar el comportamiento de dd. Esto puede ser tan simple como convertir un nombre de archivo a mayúsculas o algo complejo como cambiar la propiedad de un bloque. En este caso, estoy usando noerror y sync:
- La opción “noerror” le dice a dd que continúe copiando a través de un archivo de dispositivo incluso si informa errores de dispositivo. Esto puede ser útil si el dispositivo donde vive tu partición ya está defectuoso, porque “noerror” asegura que dd copiará todos los datos recuperables en esa partición.
- La opción “sync” le dice a dd que rellene cada bloque de datos entrante al búfer de copia. Lo que esto significa es que dd se asegurará de que cada bit de datos que pueda copiar sea exactamente el mismo entre la fuente y el destino. Esto es para asegurar la integridad de los datos de la partición que estás clonando.

También lee: Cómo usar el comando lp en Linux para imprimir archivos desde la terminal
Volcando el contenido de un CD usando dd
También es posible usar dd como una herramienta de volcado para el contenido de discos. Similar a un archivo IMG, puedes hacer esto usando una unidad de disco como entrada y la extensión .ISO como salida. Considera el siguiente ejemplo:
dd if=/dev/cdrom of=/tmp/dump.iso conv=noerror,syncEste comando le dirá a dd que cargue el dispositivo CD-ROM y copie su contenido a un archivo ISO.

Una vez hecho, puedes usar el comando file para verificar si el archivo volcado es una imagen ISO 9660:
file /tmp/dump.isoGrabando el volcado ISO en un CD
A continuación, puedes usar dd para crear duplicados del archivo ISO que acabas de hacer. Para hacer esto, necesitas insertar un disco en blanco en tu unidad y usar “/dev/cdrom” como el archivo de salida de dd. Con eso, puedes ejecutar el siguiente comando para grabar correctamente el archivo ISO en el disco:
dd if=/tmp/image.iso of=/dev/cdrom obs=32k seek=0Este comando no intenta usar ningún bypass de errores o verificaciones de integridad. En cambio, establece dos opciones que son específicas para la escritura en CD-ROM:
- La opción “obs” establece el tamaño de los bloques que dd va a escribir en el disco. En este caso, el comando utiliza 32 kilobytes como base para las transferencias de medios ópticos.
- Por otro lado, la opción “seek” le dice a dd que establezca el inicio de la transferencia en un bloque de datos específico. Para transferir correctamente a un CD-ROM, es importante establecer esto en 0 para que dd escriba inmediatamente en el primer sector del disco.

También lee: 8 útiles e interesantes prompts de Bash
Preguntas frecuentes
¿Es posible ver el progreso de una operación dd?
¡Sí! Es increíblemente fácil ver el progreso de una operación dd. Para hacer esto, todo lo que necesitas hacer es incluir el parámetro status al final de tu comando dd:
dd if=/dev/sda4 of=/dev/sdd1 conv=noerror,sync status=progress
La opción “progress” le dice a dd que imprima los bloques que está copiando actualmente en la salida estándar, lo que efectivamente te permite ver el progreso del comando. Aparte de la opción “progress”, el parámetro de estado también acepta dos valores adicionales:
- Noxfer: El valor “noxfer” es similar a “progress” pero no imprime la información de transferencia general al final del comando. Esto puede ser útil si estás utilizando comandos dd como parte de un gran pipe de UNIX.
- None: El valor “none” le dice a dd que no imprima ninguna información excepto errores cuando se está ejecutando. Esto es útil si estás ejecutando tareas programadas de dd, como crear archivos IMG de respaldo para particiones actualmente activas.
¿Está bien establecer siempre un tamaño de bloque alto para acelerar las transferencias?
No. Si bien establecer un tamaño de bloque alto ciertamente acelerará la tasa de transferencia de dd, hacer esto no asegurará que el dispositivo al que estás escribiendo se inicialice correctamente. Por ejemplo, establecer un tamaño de bloque alto para medios ópticos como un CD-ROM o un DVD-ROM puede llevar a discos ilegibles cuando se reproducen en un reproductor de discos.
Una buena regla general es usar tamaños de bloque altos solo cuando se vierta desde medios como discos y unidades flash. Además, también es buena práctica establecer el tamaño de bloque máximo en 2048 kilobytes solamente. Hacer esto asegura que aún puedas volver a colocar el contenido de un disco en un CD o DVD.
Intenté crear una unidad USB booteable pero no arrancó. ¿No está funcionando dd?
¡No! La razón más probable por la que no arrancó es que el archivo que dd copió en la unidad USB no es un archivo booteable. Por ejemplo, escribir un instalador de CD en una unidad USB no establecerá las banderas adecuadas para hacerlo booteable.
Una forma de asegurarte de que sea booteable es verificar sus propiedades a través del programa file. Por ejemplo:
file /Downloads/ubuntu-21.10.iso
A partir de ahí, debes mirar las propiedades que se imprimen en la salida estándar. Un archivo booteable debería ser una imagen de disco o un archivo ISO híbrido.
Crédito de la imagen: Unsplash