Uso de dd

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.

Introducción.

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.

Acerca de dd.

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.

Procedimientos

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.

Sintaxis básica.

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.

Respaldo y restauración del sector de arranque maestro (MBR).

Los primeros 512 bytes de una unidad de almacenamiento con tabla de particiones MBR contienen información crítica:

Operaciones con el MBR completo (512 bytes)

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

Operaciones con componentes específicos del MBR

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

Respaldo y restauración de la tabla de particiones GPT.

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.

Borrado seguro de datos y otros usos comunes.

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.

Ejemplos demostrativos de borrado

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

Formato de bajo nivel y sobrescritura de unidades

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

Otros usos prácticos

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

💡 Consejos y Actualización Técnica