Él comando dd es una utilidad para copiar y convertir archivos de una ubicación a otra. Curiosamente, significa “copiar y convertir”, pero dado que el nombre cc
ya fue tomado por el compilador de C, se denominó ‘ dd
‘. Ya que dd
interactúa directamente con los sectores de un disco es un potencial comando peligroso y debe usarse con la máxima precaución.
Tabla de contenido
Uso básico del comando dd
dd
El comando de forma predeterminada lee desde la entrada estándar y escribe en la salida estándar. Esto se puede cambiar usando el if
y of
opciones if
especifica el archivo de entrada y of
especifica el archivo de salida:
$ dd if=<input-file-name> of=<output-file-name>
No corra dd
si no estás seguro de qué poner if
o of
. ( dd
es infamemente conocido como el destructor de discos.)
Algunas opciones útiles:
Opciones | Explicación |
---|---|
bs=BYTES |
define el tamaño del bloque/número de BYTES para ser leído o escrito a la vez. (predeterminado=512) |
cuenta=N | especifica que solo N número de bloques debe ser copiado. |
|
noerror instruye dd para continuar si hay un error y sync indica a dd que complete el bloque de entrada con NUL si hubo un error de lectura. |
status=progress |
disponible en dd v8.24 y posteriores, muestra el progreso de la operación. (Verificar dd versión de , escriba $ dd --version ) |
Nota: El tamaño de bloque óptimo para usar depende de los medios de almacenamiento subyacentes. En general, un tamaño de bloque más grande significa lectura y escritura más rápidas.
Cosas prácticas que se pueden hacer usando dd
Repasemos algunas de las aplicaciones prácticas del comando dd aquí.
1. Clonación de unidades/particiones enteras
Este es uno de los usos más populares del comando dd. Puede identificar las particiones usando el fdisk
dominio:
$ sudo fdisk -l
Nota: Las particiones que se muestran arriba (para 2 SSD, una NVMe y otra SATA) pueden ser diferentes a las que tiene en su sistema.
Para clonar un tipo de partición:
$ sudo dd if=/dev/sda of=/dev/sdb bs=64M conv=noerror status=progress
Este comando clona todo el /dev/sda
para /dev/sdb
leyendo y escribiendo 64 MiB a la vez y continuará clonando si hay algún error al leer un bloque. Él of
la opción generalmente será un disco duro externo vacío ( /dev/sdb
en este caso).
2. Creación de copias de seguridad comprimidas de particiones
A veces, clonar la partición puede ser un proceso demasiado grande. Es posible que desee crear una copia de seguridad comprimida para que ocupe menos espacio. dd
cuando se usa con el comando gzip puede hacer exactamente eso:
$ sudo dd if=/dev/sda conv=sync,noerror status=progress | gzip -c > sda_backup.tar.gz
Como no hay un of
opción, dd escribirá /dev/sda
para stdout
. | (carácter de tubería) solo redirige stdout
de dd
para stdin
de gzip
. La opción -c dicta gzip
para escribir el archivo en stdout
que luego es redirigido a un tar.gz
expediente.
Incluso puede hacer una copia de seguridad en una máquina remota si tiene ssh
acceso a esa máquina y usted tiene ssh
configurado en su máquina. Lo más probable es que la máquina remota ya tenga ssh
. Para instalarlo en su sistema local, siga este tutorial.
Para hacer una copia de seguridad en una máquina remota, escriba esto en su máquina local:
$ sudo dd if=/dev/sda bs=1M conv=sync,noerror status=progress | gzip -c | ssh [email protected]_machine 'cat > backup.tar.gz'
Enter su contraseña y listo, se inicia una copia de seguridad remota.

En la captura de pantalla anterior, creé una copia de seguridad aleatoria de 40 Mib (o 42 MB) desde mi máquina local en una máquina remota sobre ssh
.
Listado del contenido en la máquina remota usando el comando ls:

Ahora en lugar de escribir a gzip
‘s stdout
la copia de seguridad se transmite al servidor remoto stdin
que es leído por el comando cat.
El comando cat sin ninguna opción solo escribe en stdout
lo que lee forma stdin
. Redirigir el stdout
a un .tar.gz
archivo tiene el efecto de cat
comando que lee la copia de seguridad y la escribe en el .tar.gz
expediente.
3. Creación de una unidad USB de arranque
Incluso puede crear una unidad USB de arranque usando dd
. Necesitarás el .iso
archivo de su Sistema Operativo para esto.
La unidad USB debe desmontarse primero . Para desmontar escriba:
$ sudo umount /dev/<usb_drive_partition>
Para enumerar la partición de la unidad USB, utilice fdisk -l
o usar el lsblk
dominio:
$ sudo lsblk

Ahora que la unidad está desmontada, podemos crear una unidad de arranque a partir de ella. Aquí crearé una unidad de arranque en /dev/sdb
con Ubuntu 20.04 en él:
$ sudo dd if=~/Downloads/ubuntu-20.04.1-desktop-amd64.iso of=/dev/sdb bs=64M status=progress
/dev/sdb
ahora es una unidad de arranque.
4. Limpiar una unidad con el comando dd
Una unidad se puede borrar sobrescribiendo con 0 o datos aleatorios usando dd
. Aquí voy a limpiar el /dev/sdb
manejar. Asegúrese absolutamente de qué unidad va a escribir en el of
opción .
Para sobrescribir con el tipo de 0:
$ dd if=/dev/zero of=/dev/sdb bs=1M status=progress
/dev/zero
es un dispositivo especial que proporciona tantos caracteres nulos (ASCII NUL, 0x00) como se leen. sobrescribirá /dev/sda
con 0 teniendo el efecto de borrarlo.
Para borrar la unidad sobrescribiéndola con datos aleatorios, escriba:
$ dd if=/dev/urandom of=/dev/sdb bs=1M status=progress
/dev/urandom
es también un dispositivo especial desde el cual se pueden leer datos aleatorios.
5. Convertir archivos a mayúsculas
Este es un uso oscuro de dd
. Sin embargo es interesante que dd
puede hacer esto también!
$ dd if=file of=new_file conv=ucase

Conclusión
En este artículo aprendimos a usar dd
. dd
es un comando muy útil, aunque peligroso, si se usa incorrectamente. Para aprender más sobre dd
comando, mira su página de manual