LINUX

Comando DD de Linux: 15 ejemplos con todas las opciones

El comando dd de Linux es una de las utilidades más poderosas que se puede utilizar de diversas formas. Esta herramienta se utiliza principalmente para copiar y convertir datos, por lo que significa duplicador de datos. Esta herramienta se puede utilizar para:

  • Hacer una copia de seguridad y restaurar un disco duro completo o una partición.
  • Crear un sistema de archivos virtual e imágenes de respaldo de CD o DVD llamados archivos ISO
  • Copie regiones de archivos de dispositivo sin procesar, como hacer una copia de seguridad de MBR (registro de arranque maestro).
  • Conversión de formatos de datos como ASCII a EBCDIC.
  • Conversión de minúsculas a mayúsculas y viceversa.

Solo el superusuario puede ejecutar este comando. Debe tener mucho cuidado al usar este comando, ya que un uso inadecuado puede causar una gran pérdida de datos. Entonces, algunas personas consideran esta herramienta como un destructor de datos.

Sintaxis del comando dd

El uso básico del comando dd es bastante fácil porque solo toma dos argumentos: si= para especificar el archivo de entrada y de= para especificar el archivo de salida. Los argumentos de esas opciones pueden ser archivos o dispositivos de bloque. Sin embargo, no recomendaría usar dd para copiar archivos porque cp lo hace de una manera mucho más simple. Sin embargo, puede usarlo para clonar un disco duro. La sintaxis es

dd if=<source file name> of=<target file name> [Options]

Aprenderemos varias opciones mientras revisamos los ejemplos de comandos dd.

1. Hacer una copia de seguridad y restaurar un disco completo o una partición

Es posible guardar todos los datos de un disco / partición completo en otro disco / partición. No es una simple copia como comando cp, sino una copia de tamaño de bloque.

una. Copia de seguridad de todo el disco a disco

Puede copiar todos los datos (disco completo) del disco /dev/sda a /dev/sdb. dd no sabe nada sobre el sistema de archivos o las particiones; simplemente copiará todo desde /dev/sda a /dev/sdb. Debe indicar el tamaño del bloque que se copiará en el momento con bs opción. Entonces, esto clonará el disco con los mismos datos en la misma partición.

# dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
97281+0 records in
97280+0 records out
99614720 bytes (100 MB) copied, 2.75838 s, 36.1 MB/s

Esto solo funciona si el segundo dispositivo es tan grande o más grande que el primero. De lo contrario, obtendrá particiones truncadas y sin valor en la segunda. Aquí, si significa archivo de entrada, de significa archivo de salida y bs representa el tamaño del bloque (número de bytes a leer / escribir a la vez). Asegúrese de utilizar tamaños de bloque en múltiplos de 1024 bytes, lo que equivale a 1 KB. Si no especifica el tamaño de bloque, dd usa un tamaño de bloque predeterminado de 512 bytes. los conv parámetro de valor No hay error permite que la herramienta continúe copiando los datos aunque encuentre algún error. La opción de sincronización permite utilizar E / S sincronizadas.

B. Creación de una imagen de disco dd (imagen de archivo)

Puede crear una imagen de un disco o una imagen de archivo. Hacer una copia de seguridad de un disco en una imagen será más rápido que copiar los datos exactos. Además, la imagen del disco facilita mucho la restauración.

# dd if=/dev/sda of=/tmp/sdadisk.img

Puede almacenar el archivo de salida donde desee, pero debe dar un nombre de archivo que termine con .img extensión como arriba. En vez de /tmp/sdadisk.img, puede almacenarlo, por ejemplo, en /sdadisk.img si tu quieres.

C. Creando una imagen de disco comprimida

Debido a que dd crea el contenido exacto de un disco completo, significa que ocupa demasiado tamaño. Puede decidir comprimir la imagen del disco con el siguiente comando

# dd if=/dev/vda | gzip -c >/tmp/vdadisk.img.gz

La pipa | El operador hace que la salida del comando de la izquierda se convierta en la entrada del comando de la derecha. los -c La opción escribe la salida en la salida estándar y mantiene los archivos originales sin cambios.

D. Hacer una copia de seguridad de una partición o clonar una partición a otra

En lugar de un disco completo, solo puede hacer una copia de seguridad de una partición simple. Solo necesita indicar el nombre de la partición en el archivo de entrada como se muestra a continuación

# dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerror,sync

Esto sincronizará la partición /dev/sda1 a /dev/sdb1. Debe verificar que el tamaño de /dev/sdb1 debería ser más grande que /dev/sda1. O puede crear una imagen de partición como se muestra a continuación

# dd if=/dev/sda1 of=/tmp/sda1.img

mi. Restaurar un disco o una imagen de partición

Guardar un disco o una partición ayuda a restaurar todos los datos, si hay algún problema con nuestra unidad original. Para restaurar, debe invertir el archivo de entrada con el archivo de salida indicado durante la operación de copia de seguridad como se muestra a continuación.

# dd if=/tmp/sdadisk.img of=/dev/sda

Recuperará los datos que estaban presentes antes de la operación de copia de seguridad y no después de la operación.

mi. Restaurando imagen comprimida

Primero debe indicar el archivo comprimido y el archivo de salida que es el disco comprimido antes.

# gzip -dc /tmp/vdadisk.img.gz | dd of=/dev/vda

La opción -d aquí es descomprimir. Tenga en cuenta el archivo de salida. Puede montar el disco restaurado para ver el contenido. Tenga en cuenta que los datos se agregarán después de la última operación de copia de seguridad de compresión.

2. Creación de un sistema de archivos virtual / imágenes de copia de seguridad de CD o DVD como archivos iso

Puede necesitar crear un sistema de archivos virtual en Linux por algunas razones, como la creación de una máquina virtual en su host Linux. También puede necesitar crear una imagen iso de copia de seguridad de un CD o DVD

una. Creando un sistema de archivos virtual

Un sistema de archivos virtual es un sistema de archivos que existe en un archivo, que a su vez existe en un disco físico. Puede necesitarlo para crear, por ejemplo, un dispositivo de bucle o intercambio adicional o una máquina virtual. Nosotros necesitamos /dev/zero que es un archivo que se usa para crear un archivo sin datos pero con el tamaño requerido (un archivo con todos los ceros). En otras palabras, esto creará un archivo de datos con todos los ceros en el archivo que le dará el tamaño a un archivo.

# dd if=/dev/zero of=/file bs=1024K count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.21755 s, 431 MB/s

La opción count se refiere al número de bloques de entrada que se copiarán. Combinado con el valor del tamaño del bloque, indica el tamaño total a copiar. Por ejemplo bs=1024k y count=500 Dar un tamaño = 1024K * 500 = 524288000 bytes = 524MB

Ahora verifiquemos el tamaño de nuestro archivo.

# ls -lh /file
-rw-r--r-- 1 root root 500M May 17 18:57 /file

Puede ver que tenemos nuestro sistema de archivos virtual creado con el tamaño indicado. Ahora puede usarlo para crear un dispositivo de bucle o un disco virtual o cualquier otra cosa.

B. Modificar los primeros 512 bytes de un archivo con datos nulos

Si durante la operación indica un archivo de salida existente, perderá sus datos. Por algunas razones, es posible que deba reemplazar un tamaño de bloque del archivo de salida.

dd if=/dev/zero of=file1 bs=512 count=1 conv=notrunc

los notrunc La opción se refiere a no truncar el archivo, solo reemplazar los primeros 512 bytes, si existe. De lo contrario, obtendrá un archivo de 512 bytes

C. Creación de una imagen iso de copia de seguridad de un CD o DVD

Quizás se pregunte por qué no simplemente copiar el contenido de su CD en un directorio. ¿Cómo manejaría el sector de arranque de un CD? No puede encontrarlo como un archivo en el dispositivo porque es solo el primer sector. Debido a que dd copia sector por sector, por otro lado, también copiará esa información.

# dd if=/dev/cdrom of=/mycd.iso

Necesita saber que tiene que usar el -o loop opción, que le permite montar un archivo como cualquier dispositivo normal. Entonces, para montar /mycd.iso sobre el /mnt/cd directorio, haz lo siguiente

# mount -o loop /mycd.iso /mnt/cd

d) Cree una unidad USB de arranque

Supongamos que hemos descargado la imagen iso de centos aquí en este directorio «~ / Descargas /».

if = ~ / Downloads / CentOS-8-x86_64-1905-dvd1.iso – el archivo de entrada está en la ruta ‘~ / Downloads / CentOS-8-x86_64-1905-dvd1.iso’

of = / dev / sdb – el archivo de salida está en la ruta ‘/ dev / sdb’

bs = 1M: lea de ‘~ / Downloads / CentOS-8-x86_64-1905-dvd1.iso’ y escriba en ‘/ dev / sdb’ 1 megabytes de datos a la vez.

# dd si= ~/Descargas/CentOS-8-x86_64-1905-dvd1.iso de=/dev/sdb bs= 1 M

3. Copia de seguridad y restauración de MBR

El cargador de arranque GRUB se almacena más comúnmente en el MBR de la unidad de arranque. El MBR constituye los primeros 512 bytes del disco, lo que permite hasta 466 bytes de almacenamiento para el cargador de arranque. El espacio adicional se utilizará para almacenar la tabla de particiones para esa unidad. Si MBR se corrompe, no podremos arrancar en Linux.

una. Copia de seguridad de MBR

Debido a que el MBR constituye los primeros 512 bytes del disco, solo necesitamos copiar ese tamaño de bloque

# dd if=/dev/sda of=/tmp/sdambr.img bs=512 count=1

Con el count=1 y bs=512, solo se copiarán 512 bytes que corresponden al tamaño de nuestro MBR.

Puede mostrar el MBR guardado con el comando od que vuelca los archivos en octal y otros formatos como se muestra a continuación

# od -xa /tmp/sdambr.img
0000000    bf52    81f4    8b66    832d    087d    0f00    e284    8000
          R   ?   t soh   f  vt   - etx   }  bs nul  si eot   b nul nul
0000020    ff7c    7400    6646    1d8b    8b66    044d    3166    b0c0
          | del nul   t   F   f  vt  gs   f  vt   M eot   f   1   @   0

-a La opción selecciona caracteres con nombre y -x selecciona unidades hexadecimales de 2 bytes

B. Copia de seguridad de los datos de arranque de MBR excluyendo la tabla de particiones

Los datos del MBR de 512 bytes se encuentran en el primer sector del disco duro. Consiste en bootstrap de 446 bytes, tabla de particiones de 64 bytes y firma de 2 bytes. Significa que podemos excluir la tabla de particiones y la firma de bytes mientras hacemos una copia de seguridad del MBR conservando solo un tamaño de bloque igual al tamaño de arranque.

# dd if=/dev/sda of=/tmp/sdambr2.img bs=446 count=1

C. Restaurar MBR a partir de una imagen MBR

Puede restaurar su MBR como se muestra en los comandos anteriores con

# dd if=/tmp/sdambr.img of=/dev/sda

3. Conversión de formatos de datos

Si un archivo de entrada utiliza un juego de caracteres que no es el juego de caracteres nativo de la computadora host, el operador de importación debe realizar una conversión. Por ejemplo, si ASCII es el formato nativo para cadenas en su computadora host, pero el archivo de datos de entrada representa cadenas usando EBCDIC, debe convertir EBCDIC a ASCII y viceversa.

una. Convierta el formato de datos de un archivo de EBCDIC a ASCII

Si tiene un archivo ebcdic con usted, en su mayoría recuperado de sistemas mainframe, entonces, le gustaría convertirlo a ASCII para realizar modificaciones usando editores de texto en servidores UNIX.

# dd if=textfile.ebcdic of=textfile.ascii conv=ascii

los conv el parámetro de valor ahora es ascii porque convertimos de EBCDIC a ASCII

B. Convierta el formato de datos de un archivo de ASCII a EBCDIC

Después de modificar la versión ASCII y una vez hecho esto, puede volver a convertirla a EBCDIC para que la utilice su aplicación.

# dd if=textfile.ascii of=textfile.ebcdic conv=ebcdic

los conv el parámetro de valor ahora es mibcdic porque convertimos de ASCII a EBCDIC. Si solo está reemplazando un número particular de bytes con un número equivalente de bytes con caracteres diferentes, la conversión sería fluida y la aplicación que lee el archivo no debería tener ningún problema.

4. Conversión de mayúsculas y minúsculas de un archivo

El comando DD también se puede usar para algo asombroso. Puede convertir todo el texto (alfabetos) de un archivo a mayúsculas o minúsculas y viceversa. Para el siguiente ejemplo, tendremos un archivo para las pruebas.

# cat file10
test dd convert

una. Convertir un archivo a mayúsculas

Debido a que nuestro ejemplo de archivo de texto está en minúsculas, lo convertiremos a mayúsculas

# dd if=~/file10 of=~/file20 conv=ucase

El comando creará el nuevo archivo indicado. Ver eso ahora conv la opción toma ucase valor. Comprobemos el resultado

# cat file20 
TEST DD CONVERT

B. Convertir un archivo a minúsculas

Ahora haremos la operación inversa que convertirá a minúsculas.

# dd if=~/file20 of=~/file30 conv=lcase

Mira que usamos caso de conv opción para convertir de mayúsculas a minúsculas.

# cat file30 
test dd convert

El comando dd no convierte los nombres de los archivos, solo su contenido.

Conclusión

El comando dd, aunque técnicamente no es un comando de archivo, es similar en algunos aspectos porque puede copiar una partición o un disco completo en un archivo y viceversa.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar