Élcomando ddes una utilidad para copiar y convertir archivos de una ubicación a otra. Curiosamente, significa “copiar y convertir”, pero dado que el nombrecc
ya fue tomado por el compilador de C, se denominó ‘dd
‘. Ya quedd
interactúa directamente con los sectores de un disco es un potencialcomando peligrosoy 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 elif
yof
opcionesif
especifica el archivo de entrada yof
especifica el archivo de salida:
$ dd if=<input-file-name> of=<output-file-name>
No corradd
si no estás seguro de qué ponerif
ohof
. (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 deBYTES para ser leído o escrito a la vez. (predeterminado=512) |
cuenta=N | especifica que soloN número de bloques debe ser copiado. |
|
noerror instruyedd para continuar si hay un error ysync indica a dd que complete el bloque de entrada con NUL si hubo un error de lectura. |
status=progress |
disponible endd 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 elfdisk
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. Élof
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 unof
opción, dd escribirá/dev/sda
parastdout
. | (carácter de tubería) solo redirigestdout
dedd
parastdin
degzip
. . . . La opción -c dictagzip
para escribir el archivo enstdout
que luego es redirigido a untar.gz
hora de oficina.
Incluso puede hacer una copia de seguridad en una máquina remota si tienessh
acceso a esa máquina y usted tienessh
configurado en su máquina. Lo más probable es que la máquina remota ya tengassh
. 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 username@remote_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 sobressh
.
Listado del contenido en la máquina remota usando el comando ls:

Ahora en lugar de escribir agzip
'sstdout
la copia de seguridad se transmite al servidor remotostdin
que es leído por el comando cat.
El comando cat sin ninguna opción solo escribe enstdout
lo que lee formastdin
. Redirigir elstdout
a un.tar.gz
archivo tiene el efecto decat
comando que lee la copia de seguridad y la escribe en el.tar.gz
hora de oficina.
3. Creación de una unidad USB de arranque
Incluso puede crear una unidad USB de arranque usandodd
. 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, utilicefdisk -l
o usar ellsblk
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 usandodd
. Aquí voy a limpiar el/dev/sdb
manejar.Asegúrese absolutamente de qué unidad va a escribir en elof
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 dedd
. Sin embargo es interesante quedd
puede hacer esto también!
$ dd if=file of=new_file conv=ucase

Conclusión
En este artículo aprendimos a usardd
.dd
es un comando muy útil, aunque peligroso, si se usa incorrectamente. Para aprender más sobredd
comando, mira supagina del manual