Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
El mandato dd es una herramienta de potencia extraordinaria y precisión en sistemas GNU/Linux, utilizada primordialmente para la conversión y copia de datos a bajo nivel. Su capacidad para interactuar directamente con dispositivos ―tratados como archivos especiales en /dev― la hace indispensable para tareas administrativas críticas.
dd es una herramienta cuyo propósito principal es convertir y copiar archivos o flujos de datos. En GNU/Linux, los dispositivos que permiten acceder a particiones, unidades de almacenamiento completas o fuentes especiales ―como /dev/zero o /dev/urandom― se representan como archivos en el sistema de archivos sobre los cuales dd puede leer y escribir. Por tanto, resulta ideal para tareas como respaldar el sector de arranque maestro (MBR) o una partición, clonar unidades de almacenamiento, crear archivos de prueba u obtener datos aleatorios. Además, puede realizar conversiones de datos durante la copia, como el intercambio de orden de bytes (byte-swapping) o la conversión entre codificaciones de texto como ASCII y EBCDIC.
Aunque su origen etimológico es incierto ―posible acrónimo de data description o data duplicator―, dd se instala de manera predeterminada en todas las distribuciones, pues forma parte del paquete esencial coreutils.
Antes de proceder, es imperativo verificar con extrema precaución los dispositivos de origen (if=) y destino (of=). Un error al especificarlos puede resultar en la pérdida total e irreversible de datos. Un método seguro es utilizar lsblk o blkid para listar las unidades disponibles.
La sintaxis fundamental de dd es la siguiente:
dd if=[origen] of=[destino] [bs=tamaño_de_bloque] [count=número_de_bloques] [status=progress]
La ruta del archivo de respaldo será el directorio de trabajo actual o la ruta absoluta que se defina con la opción of=. Ejemplo:
dd if=/dev/sda of=/home/usuario/mbr.bin bs=512 count=1
En el ejemplo anterior se creará un archivo en la ruta /home/usuario/mbr.bin. La opción status=progress (disponible en versiones recientes de coreutils) es sumamente útil para monitorear el avance de operaciones largas.
Los primeros 512 bytes de una unidad de almacenamiento con tabla de particiones MBR contienen información crítica:
0xAA55).Ejecute lo siguiente para realizar un respaldo del sector de arranque maestro completo:
dd if=/dev/sda of=/root/mbr.bin bs=512 count=1
Ejecute lo siguiente para restaurarlo desde el respaldo:
dd if=/root/mbr.bin of=/dev/sda bs=512 count=1
Para respaldar exclusivamente el gestor de arranque (446 bytes):
dd if=/dev/sda of=/root/gestor.bin bs=446 count=1
Para restaurar únicamente el gestor de arranque:
dd if=/root/gestor.bin of=/dev/sda bs=446 count=1
Para respaldar exclusivamente la tabla de particiones (64 bytes), saltando (skip) los primeros 446 bytes:
dd if=/dev/sda of=/root/tabla.bin bs=1 skip=446 count=64
Para restaurar exclusivamente la tabla de particiones, buscando (seek) la posición 446 en el destino:
dd if=/root/tabla.bin of=/dev/sda bs=1 seek=446 count=64
En sistemas que utilizan el esquema de particionamiento GUID Partition Table (GPT), común en hardware moderno con UEFI, la estructura es más compleja. La información de la GPT se almacena al inicio del disco y —por redundancia— también al final.
Para respaldar la cabecera y la tabla de particiones primaria GPT de un disco (generalmente los primeros 33 sectores, o 16.5 KiB en discos de sector estándar de 512 bytes):
dd if=/dev/sda of=/root/gpt_backup.bin bs=512 count=33
Para restaurar la GPT desde un respaldo:
dd if=/root/gpt_backup.bin of=/dev/sda bs=512 count=33
⚠️ Nota crítica: La operación de restauración de GPT es delicada. Asegúrese de que el disco destino es exactamente el mismo o de idéntica capacidad. Un error puede inutilizar el acceso a todas las particiones.
Los siguientes ejemplos son sumamente destructivos. Jamás los ejecute sin la absoluta certeza del dispositivo destino y de poseer respaldos integrales de los datos.
Para sobrescribir exclusivamente el gestor de arranque de un MBR con ceros:
dd if=/dev/zero of=/dev/sda bs=446 count=1
Para sobrescribir exclusivamente la tabla de particiones MBR:
dd if=/dev/zero of=/dev/sda bs=1 seek=446 count=64
Para borrar por completo el sector de arranque MBR (512 bytes):
dd if=/dev/zero of=/dev/sda bs=512 count=1
Para sobrescribir una unidad completa (/dev/sde en el ejemplo) con ceros ―una operación que puede durar horas―:
dd if=/dev/zero of=/dev/sde status=progress
Para una eliminación más segura desde el punto de vista de la irrecoverabilidad de datos, se recomienda sobrescribir con datos aleatorios. El dispositivo /dev/urandom es adecuado para este fin, aunque resulta más lento:
dd if=/dev/urandom of=/dev/sde status=progress
Crear un archivo de 1 GiB lleno de ceros, útil para generar volúmenes virtuales o espacio de intercambio:
dd if=/dev/zero of=archivo_1g.bin bs=1M count=1024
Clonar el contenido completo de una unidad (/dev/sda) en otra (/dev/sdb) de igual o mayor capacidad:
dd if=/dev/sda of=/dev/sdb bs=4M status=progress
Crear una imagen de disco ISO a partir de un CD/DVD físico:
dd if=/dev/sr0 of=mi_cd.iso bs=2048
status=progress en distribuciones modernas (AlmaLinux/Rocky Linux/RHEL 8/9/10) para visualizar el progreso. En sistemas con SysVinit como ALDOS, puede enviar la señal USR1 al proceso dd en ejecución (ej: kill -USR1 $(pidof dd)) para forzar un reporte de estado.bs) a un valor mayor (ej: 4M o 8M) suele acelerar transferencias de gran volumen. Experimente para encontrar el valor óptimo para su hardware.dd carece de confirmaciones. Un error tipográfico es catastrófico. La regla de oro es: verificar tres veces el dispositivo destino (of=) antes de presionar Enter.