Dd

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 11 de mayo de 2020; las comprobaciones requieren 4 ediciones .

dd ( definición de datos ) es un programa UNIX para copiar y convertir archivos. El nombre se hereda del operador DD ( Definición de datos ) del lenguaje JCL [ 1 ] [2] .

Dado que en UNIX muchos objetos (discos duros/disquetes, puertos COM/LPT, RAM de la computadora, memoria con el código/datos de cada proceso) se representan como archivos especiales, la gama de aplicaciones de la utilidad ddes mucho más amplia de lo que parece a primera vista. Regularmente, existe la necesidad no solo de copiar un archivo o varios archivos (que es para lo que está diseñada la utilidad cp ), sino también de copiar los primeros n bytes del archivo, saltar m bytes desde el principio, leer el archivo de un defectuoso medio, traduzca el contenido del archivo a ASCII , "invierta" el orden de los bytes en el archivo ( Little-Endian vs. Big-Endian ) [3] , simplemente copie un archivo muy grande o todo junto. Para este propósito, y sirve dd.

Entre otras cosas, esta utilidad le permite copiar regiones de archivos de dispositivo sin formato, por ejemplo, hacer una copia de seguridad del sector de arranque del disco duro o leer bloques de datos fijos de archivos especiales, como /dev/zero o /dev/random [4] .

El nombre de la utilidad dda veces se descifra en broma como "destructor de disco", "destructor de datos", "eliminar datos" o "terminar el disco", ya que la utilidad le permite realizar operaciones de bajo nivel en discos duros, al más mínimo error. (como invertir parámetros ify of) puede perder parte de los datos en el disco (o incluso todos los datos) [3] . También hay un apodo más "respetuoso": "duplicador de disco", porque en la práctica su aplicación principal son las copias, imágenes y copias de seguridad de particiones.

Algunos parámetros

Este artículo fue escrito usando man dd , que describe la versión GNU de dd . Las versiones de dd en otros sistemas operativos pueden diferir.

Parámetros básicos

dd [--help] [--version] [status] [if=файл] [of=файл] [ibs=байты] [obs=байты] [bs=байты] [cbs=байты] [skip=блоки] [seek=блоки] [count=блоки] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]

Ejemplos de uso

Trabajando con CD/DVD e Imágenes

Cree una imagen de CD/DVD utilizando un tamaño de bloque grande. Ignorar errores:

dd if = /dev/cdrom of = backup.iso bs = 65536 conv = sin error

Escriba la imagen ISO "image.iso" en el dispositivo sdb, junto con su sector de arranque y formato de partición, en el sistema de archivos de imagen (generalmente ISO 9660 o UDF ):

dd if = imagen.iso de = /dev/sdb

Trabajando con archivos

Copie el archivo foo a la barra de archivos:

dd si = foo de = bar

Copie el archivo foo a la barra de archivos, omitiendo los primeros 10 KB del archivo foo:

dd if = foo of = bar bs = 1k skip = 10

Corte un archivo foo de 10 MB en 2 archivos de 5 MB:

dd if = foo of = bar.0 bs = 1M cuenta = 5 dd if = foo of = bar.1 bs = 1M skip = 5

Combinar cuatro archivos de 100 MB en uno:

dd si = SONRISA.001 de = SONRISA bs = 1M busca = 0 dd si = SONRISA.002 de = SONRISA bs = 1M busca = 100 dd si = SONRISA.003 de = SONRISA bs = 1M busca = 200 dd si = SONRISA. 004 de = SONRISA bs = 1M buscar = 300

y es posible así:

dd if = SONRISA.001 > SONRISA dd if = SONRISA.002 >> SONRISA dd if = SONRISA.003 >> SONRISA dd if = SONRISA.004 >> SONRISA

o (para recopilar un archivo de una gran cantidad de piezas):

para i en { 1 ..4 } ; hacer dd si = SONRISA.00 $i >> SONRISA hecho

Los ejemplos anteriores muestran las posibilidades de dd; en la práctica, se suele utilizar cat :

gato SONRISA.00 { 1 ,2,3,4 } >> SONRISA

Imprime en pantalla (en /dev/stdout) los primeros 256 bytes del archivo foo:

dd if = foo of = /dev/stdout bs = 128 cuenta = 2

o:

dd si = foo bs = 128 cuenta = 2

El comando anterior solo es bueno para ver un archivo de texto. Se recomienda que el contenido del archivo binario se vea así:

dd if = foo bs = 1 cuenta = 10 2 >/dev/null | volcado hexadecimal

Copia de seguridad y borrado de datos

En la mayoría de los casos, debe tener cuidado de que el archivo de destino no termine en el mismo disco del que se tomó la imagen (y, de hecho, es recomendable desmontarlo por completo, ya que cualquier cambio accidental en su sistema de archivos puede violar la integridad de la imagen).

Copie una partición del disco duro a otro disco duro, ignorando los errores de E/S:

dd if = /dev/sda1 of = /dev/sdb2 bs = 4096 conv = sin error, sincronización

Haga una copia del registro de arranque maestro (MBR) del primer disco duro:

dd si = /dev/hda de = bootloader.mbr bs = 512 cuenta = 1

Rellene todo el espacio libre en la partición actual con ceros:

dd if = /dev/ zeroof = zerofill

Cree una imagen comprimida del primer disco duro con todas las particiones (se recomienda llenar primero el espacio libre con ceros para una mejor compresión):

dd si = /dev/sda | xz -9 > MyFuBu.ISO.XZ

Cree una imagen segmentada de 2 Gb del primer disco duro con todas las particiones (con y sin compresión):

dd si = /dev/sda | xz-9 | split -b 2G --sufijo adicional = .xz - MyFuBu.iso. dd si = /dev/sda | split -b 2G --sufijo adicional = .iso - MyFuBu.


Vea el contenido del registro de arranque maestro (MBR) del primer disco duro:

dd si = /dev/sda bs = 512 cuenta = 1 | volcado hexadecimal -C

Copie todo excepto la etiqueta del disco a la cinta :

( dd bs = 4k saltar = 1 cuenta = 0 && dd bs = 512k ) < $disco > $cinta

Copie todo, sin sobrescribir la etiqueta, de la cinta al disco:

( dd bs = 4k buscar = 1 cuenta = 0 && dd bs = 512k ) < $cinta > $disco

Destruya el contenido del dispositivo /dev/sdgllenándolo con "ceros" de /dev/zero:

dd si = /dev/cero de = /dev/sdg bs = 65536

Consultar el estado de una operación:

killall -USR1 dd

En algunos casos, el estado de ejecución se visualiza con el comando:

pkill -USR1 -x dd

En versiones recientes, el estado de progreso se puede imprimir en la consola emitiendo el comando dd con status=progress

dd if = image.iso of = /dev/sdb status = progreso

Variantes de dd orientadas a la recuperación

Los programas de recuperación de código abierto incluyen dd_rescue [5] [6] [7] [8] y dd_rhelp [9] [10] que funcionan juntos, savehd7 y GNU ddrescue .

Antonio Diaz Diaz (desarrollador de GNU ddrescue) compara [11] opciones de dd para tareas de recuperación:

La utilidad dd estándar realiza una lectura lineal del disco, y esto puede llevar mucho tiempo o incluso quemar la unidad sin recuperar nada si los errores se encuentran al principio del disco duro.

dd_rescue hace lo mismo que dd, solo que más eficientemente.

dd_rhelp  es un script de shell complejo que ejecuta dd_rescue muchas veces tratando de copiar estratégicamente la unidad, pero es muy ineficiente.

  • dd_rhelp primero extrae todos los datos legibles y los guarda en un archivo, insertando ceros en lugar de bytes que no pudo leer. A continuación, la utilidad intenta leer de nuevo los datos no válidos y actualizar el archivo.
  • GNU dd_rescue se puede usar para copiar datos directamente a una nueva unidad según sea necesario, al igual que dd.

Véase también

Notas

  1. IBM . Sentencias JCL: ¿Qué hace la sentencia DD? . Consultado el 26 de abril de 2022. Archivado desde el original el 26 de abril de 2022.
  2. Dennis Ritchie (17 de febrero de 2004). " Re: origen del comando UNIX dd ". alt.folklore.computers . (Grupos de Google) . Archivado desde el original el 8 de julio de 2012.
  3. 1 2 Sam Ajedrez. ¿Cómo y cuándo usar el comando dd? (enlace no disponible) . código café. Consultado el 19 de febrero de 2008. Archivado desde el original el 21 de enero de 2012. 
  4. Dd-LQWiki . LinuxQuestions.org. Consultado el 19 de febrero de 2008. Archivado desde el original el 21 de enero de 2012.
  5. dd_rescue . www.garloff.de. Consultado el 19 de febrero de 2019. Archivado desde el original el 16 de mayo de 2001.
  6. GNU ddrescue es la mejor utilidad para recuperar datos de un disco duro dañado . rus-linux.net. Consultado el 19 de febrero de 2019. Archivado desde el original el 19 de febrero de 2019.
  7. OpenNET: artículo - Recuperación de datos de medios dañados usando gddrescue (recuperación de disco reparación fs forensic linux) . www.opennet.ru Consultado el 19 de febrero de 2019. Archivado desde el original el 19 de febrero de 2019.
  8. Bruce Nikkel. Imágenes forenses prácticas: protección de pruebas digitales con herramientas de Linux . - No Starch Press, 2016. - 324 p. — ISBN 9781593278007 . Archivado el 19 de febrero de 2019 en Wayback Machine .
  9. Kalysto - /Utilities/dd_rhelp - (ayudante de rescate del disco duro) . www.kalysto.org. Consultado el 19 de febrero de 2019. Archivado desde el original el 16 de mayo de 2008.
  10. Kyle Ranking. Knoppix Hacks: consejos y herramientas para piratear, reparar y disfrutar de su PC . - "O'Reilly Media, Inc.", 2007-11-20. — 422 págs. — ISBN 9780596551759 . Archivado el 19 de febrero de 2019 en Wayback Machine .
  11. Entrevista con Antonio Díaz Díaz de GNU DDRescue (enlace no disponible) . GN azul. Consultado el 6 de diciembre de 2008. Archivado desde el original el 15 de abril de 2008. 

Literatura

Enlaces