GNU/Linux >> Tutoriales Linux >  >> Linux

Comando DD de Linux:15 ejemplos con todas las opciones

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

  • Copia de seguridad y restauración de un disco duro completo o una partición.
  • Crear un sistema de archivos virtual e imágenes de copia de seguridad de CD o DVD llamados archivos ISO
  • Copie regiones de archivos de dispositivo sin procesar como 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 el uso inadecuado puede causar una gran pérdida de datos. Por lo tanto, algunas personas consideran que esta herramienta es un destructor de datos.

Sintaxis del comando dd

El uso básico del comando dd es bastante fácil porque solo necesita dos argumentos:if =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 bloqueo. 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 del comando dd.

1. Copia de seguridad y restauración de 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 copia simple como comando cp, sino una copia de tamaño de bloque.

a. Copia de seguridad de todo el disco a disco

Puede copiar todos los datos (disco completo) desde el 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á a la vez 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 funciona solo 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, of significa archivo de salida y bs representa el tamaño del bloque (número de bytes que se leerán/escribirán 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 del bloque, use un tamaño de bloque predeterminado de 512 bytes. Las conv parámetro de valor noerror 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. Crear 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 lugar de /tmp/sdadisk.img , podría almacenarlo, por ejemplo, en /sdadisk.img si quieres.

c. Crear 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 izquierdo se convierta en la entrada del comando derecho. El -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 en 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 debe ser mayor 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

s. 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

s. 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 para descomprimir. Tenga en cuenta el archivo de salida. Puede montar el disco restaurado para ver el contenido. Tenga en cuenta que se agregarán los datos 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 crear 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

a. Crear 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 intercambio o bucle adicional o una máquina virtual. 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 ceros). En otras palabras, esto creará un archivo de datos con 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 van a copiar. Combinado con el valor del tamaño del bloque, indica el tamaño total a copiar. Por ejemplo bs=1024k y count=500 da un tamaño=1024K*500 =524288000 bytes =524MB

Ahora vamos a comprobar 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

El 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 CD o DVD

Quizás se pregunte por qué no simplemente copiar el contenido de su CD en un directorio. ¿Cómo manejarías el sector de arranque de un CD? No puede encontrar eso 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

Necesitas saber que tienes que usar el -o loop opción, que le permite montar un archivo como cualquier dispositivo normal. Entonces, para montar /mycd.iso en el /mnt/cd directorio, haga 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 "~/Downloads/".

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 - Leer desde '~/Descargas/CentOS-8-x86_64-1905-dvd1.iso' y escribir en '/dev/sdb' 1 Megabytes de datos a la vez.

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

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 gestor de arranque. El espacio adicional se usará para almacenar la tabla de particiones para esa unidad. Si el MBR se corrompe, no podremos iniciar Linux.

a. 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 volca 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 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 de MBR de 512 bytes se encuentran en el primer sector del disco duro. Consta de arranque de 446 bytes, tabla de partición 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. Restaurando MBR desde 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 conjunto de caracteres que no es el conjunto 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.

a. 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 de mainframe, 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

Las 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 use su aplicación.

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

Las conv el parámetro de valor ahora es e bcdic porque convertimos de ASCII a EBCDIC. Si solo está reemplazando un número particular de bytes con un número equivalente de bytes con diferentes caracteres, 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 sorprendente. Puede convertir todo el texto (alfabetos) en 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

a. 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. Mira 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 lcase  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 archivado, es similar en algunos aspectos porque puede copiar una partición o disco completo en un archivo y viceversa.


Linux
  1. Comando wc Linux con ejemplos

  2. Comando de clasificación de Linux con ejemplos

  3. Comando Linux Tee con ejemplos

  4. Comando de cabeza de Linux con ejemplos

  5. Comando JQ en Linux con ejemplos

Comando de CD de Linux con ejemplos

Comando de vigilancia de Linux con ejemplos

Comando de espera en Linux con ejemplos

Comando de exportación de Linux con ejemplos

Comando de reinicio en Linux con ejemplos

Comando IP de Linux con ejemplos