¿Cómo usar el comando dd en Linux?

É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.
conv=sync,noerror 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

                    
Particiones NVMe
Particiones SSD Sata

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.

Copia de seguridad remota 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:

Ls en máquina remota ls en máquina remota

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

                    
Salida Lsblk salida 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

                    
Archivo Dd en mayúsculas dd convertir archivo a mayúsculas

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

Related Posts