DD (Unix)
dd es un comando de Unix y Unix-like sistemas operativos cuyo propósito principal es convertir y copiar un archivo.[1]
En Unix, los controladores de dispositivos de hardware (tales como discos duros) y especiales archivos de dispositivo (tales como / dev/zero y / dev/random) aparecen en el sistema de archivos como archivos normales; dd
también puede leer o escribir desde/hacia estos archivos, siempre que la función se implementa en su respectivo driver. Como resultado, dd
puede ser utilizado para tareas tales como la copia de seguridad del sector de arranque de un disco duro y de obtener una cantidad fija de datos aleatorios. El dd
programa también puede realizar conversiones de datos como se copia, incluyendo orden de bytes intercambio y la conversión de la ASCII y EBCDIC codificaciones de texto.[2]
El nombre dd
puede ser una alusión a la Declaración de DD encontrado en IBMes Job Control Language (JCL),[3] donde las iniciales reposar "Descripción de datos".[4] Sintaxis del comando se asemeja a la declaración de JCL más que lo hace otros comandos de Unix, la sintaxis puede haber sido una broma.[3] Otra explicación para el nombre del comando es ese "cc" (por "convertir y copiar", al igual que en la descripción del comando) ya fue tomada por el compilador de C.[citación necesitada] Es también en tono de broma dijo que dd
está parado para el "disco Destructor" o "borrar datos", desde cuando se utiliza para operaciones de bajo nivel en discos duros, un pequeño error como revertir el archivo de entrada y salida archivo parámetros podrían resultar en la pérdida de algunos o todos los datos en un disco.[2]
El dd
comando especificado por IEEE STD 1003.1-2008, que forma parte de la Single UNIX Specification.
Contenido
- 1 Uso
- 2 Mensajes de salida
- 3 Tamaño de bloque
- 4 Usos
- 4.1 Transferencia de datos
- 4.2 Master boot record backup y restore
- 4.3 Modificación de los datos
- 4.4 Borrado de disco
- 4.5 Recuperación de datos
- 4.6 Evaluación comparativa de rendimiento de la unidad
- 4.7 Generar un archivo con datos aleatorios
- 4.8 Convertir un archivo en mayúsculas
- 4.9 Creación de archivos vacíos de tamaño arbitrario
- 5 Limitaciones
- 6 Dcfldd
- 7 Véase también
- 8 Notas
- 9 Referencias
- 10 Enlaces externos
Uso
El línea de comandos Sintaxis de dd
diferencia de muchos otros programas de Unix, que utiliza la sintaxis opción=valor
para su Opciones de línea de comandos, en lugar de la norma más --valor de la opción
o -opción=valor
formatos. De forma predeterminada, dd
Lee de STDIN y escribe a STDOUT, pero esto pueden cambiarse mediante el uso de la if
(archivo de entrada) y of
Opciones (archivo de salida).
Uso varía según diferentes sistemas operativos. Además, ciertas características de dd
dependerá de las capacidades de sistema de computadora, tales como dd
de la capacidad para implementar una opción para el acceso directo de memoria. Enviando un SIGINFO señal (o una señal USR1 en Linux) para un funcionamiento dd
proceso hace las estadísticas de E/S para imprimir error estándar una vez y luego continuar copiando (tenga en cuenta que las señales pueden terminar el proceso en OS X). dd
puede leer entrada estándar desde el teclado. Cuando fin de archivo (EOF) se alcanza, dd
saldrá. Las señales y expresiones del folclore están determinados por el software. Por ejemplo, herramientas Unix portado a Windows varían en cuanto a las EF: Cygwin utiliza < ctrl-d > (el habitual EF Unix) y MKS Toolkit utiliza < ctrl-z > (las generalmente Windows EF).
Después de la Filosofía de Unix de desarrollo de software capaz de pequeña, dd
hace una cosa y no contiene ninguna lógica que no sea necesaria para aplicar las decisiones de bajo nivel basadas en opciones de línea de comandos especificados por el usuario. A menudo, se cambian las opciones para cada serie de dd
en un proceso de múltiples paso empíricamente producir resultados deseados.[aclaración necesitado]
Mensajes de salida
La variante de GNU de dd
como las suministradas con coreutils en Linux no describe el formato de los mensajes que aparecen en la salida estándar de terminación. Sin embargo, éstos son descritos por otras implementaciones, e.g. eso con BSD.
Cada una de las "Registra en" líneas "Registra que" muestra el número de bloques completos transferido + el número de bloques parciales, por ejemplo porque el medio físico finalizó antes de que un bloque completo fue leído, o un error físico impidió leer el bloque completo.
Tamaño de bloque
A bloque es una unidad de medida el número de bytes son leer, escrito o se puede convertir en un momento. Opciones de línea de comandos pueden especificar un tamaño de bloque diferente para (entrada/lecturaIBS
) en comparación a la salida/de la escritura (OBS
), aunque el bloque de tamaño ()bs
) opción anulará ambos IBS
y OBS
. El valor predeterminado para ambos tamaños de bloque de entrada y salida es de 512 bytes (el bloque tradicional tamaño de discos) y POSIX-el mandato de "bloque". El Conde
opción para copiar se mide en bloques, como son la Skip
cuenta para la lectura y buscar
cuenta para la escritura. Las operaciones de conversión también se ven afectadas por el "tamaño de bloque de conversión" (CBS
).
Para algunos usos de la dd
comando, tamaño de bloque puede tener un efecto sobre el rendimiento. Por ejemplo, cuando la recuperación de datos desde un disco duro, un tamaño de bloque pequeño generalmente provocará los mayoría bytes ser recuperado. Emisión de muchos pequeño Lee es una sobrecarga y puede ser no útiles al desempeño de ejecución. Para mayor velocidad durante las operaciones de copia, puede utilizarse un tamaño de bloque más grande. Sin embargo, debido a la cantidad de bytes que copiar es dado por Conde × bs, es imposible copiar un número primo de bytes en un solo dd
comando sin hacer uno de dos malas decisiones, BS = N count = 1
(uso de memoria) o BS = 1 count = N
(Lea la petición arriba). Programas alternativos (véase abajo) permiten especificar bytes en lugar de bloques. Cuando dd
se utiliza para las transferencias de red, el tamaño de bloque puede tener también un impacto en paquete tamaño, dependiendo de la Protocolo de red utilizado.
El valor proporcionado para opciones de tamaño de bloque se interpreta como un entero decimal (base 10) y también puede incluir sufijos para indicar la multiplicación. El sufijo w
significa multiplicar por 2, b
significa 512, k
significa 1024, M
significa 1024 × 1024, G
medios 1024 × 1024 × 1024 y así sucesivamente. Además, algunas implementaciones de entienden el x
personaje como un operador de multiplicación para ambos parámetros de tamaño y conteo de bloque.
Por ejemplo, un tamaño de bloque como BS = 2x80x18b
es interpretado como 2 × 80 × 18 × 512 = 1474560 bytes, el tamaño exacto de un 1440 KiB disquete.
Usos
El dd
comando puede utilizarse para una variedad de propósitos.
Transferencia de datos
dd
puede duplicar datos a través de archivos, dispositivos, particiones y volúmenes. Los datos pueden ser de entrada o salida hacia y desde cualquiera de estos; Pero hay diferencias importantes con respecto a la salida cuando va a una partición. Además, durante la transferencia, los datos pueden modificarse mediante la Conv
opciones para adaptarse al medio.
Un intento de copiar el disco entero usando cp
puede omitir el bloque final si es de una longitud inesperada[citación necesitada]; mientras que dd
puede tener éxito. Los discos de origen y de destino deben tener el mismo tamaño.
dd if=/dev/sr0 of=myCD.ISO bs=2048 Conv= noerror,sincronización |
Crea un ISO imagen de disco desde un CD-ROM; en algunos casos la imagen ISO creada no puede ser la misma que la que se utilizó para grabar el CD-ROM.[5] |
dd if=/dev/sda2 of=/dev/sdb2 bs=4096 Conv= noerror |
Clones uno partición a la otra. |
dd if=/dev/ad0 of=/dev/AD1 bs= 1M Conv= noerror |
Clona un disco duro "ad0" a "ad1". |
El NOERROR
opción significa que seguir si hay un error, mientras que el sincronización
opción hace bloques de salida que desea pegar.
Master boot record backup y restore
Es posible reparar un registro de arranque maestro. Se pueden transferir hacia y desde un archivo de reparación.
Para duplicar los dos primeros sectores de una unidad de disquete:
dd if=/dev/fd0 of=MBRboot.img bs=512 Conde=2
Para crear una imagen de la entera x 86 registro de arranque maestro (incluyendo un MS-DOS tabla de particiones y MBR mágicas bytes):
dd if=/dev/SDA of=MBR.img bs=512 Conde=1
Para crear una imagen de sólo el código de arranque de la registro de arranque maestro (sin el tabla de particiones y sin los magia bytes necesarios para el arranque):
dd if=/dev/SDA of=MBR_boot.img bs=446 Conde=1
Modificación de los datos
dd
puede modificar datos en el lugar.
Sobrescribir los primeros 512 bytes de un archivo con bytes nulos:
dd if=/dev/cero of= path/to/archivo bs=512 Conde=1 Conv= notrunc
El notrunc
conversión opción significa no truncar el archivo de salida — es decir, si ya existe el archivo de salida, solo reemplazar los bytes especificados y dejar solo el resto del archivo de salida. Sin esta opción, dd
crear un archivo de salida 512 bytes de longitud.
Para duplicar una partición de disco como un archivo de imagen de disco en una partición diferente:
dd if=/dev/sdb2 of=Partition.Image bs=4096 Conv= noerror
Borrado de disco
Por razones de seguridad, a veces es necesario tener un borrado de disco de un dispositivo desechado.
Para borrar un disco escribiendo ceros dd
se puede utilizar de esta manera:
dd if=/dev/cero of=/dev/SDA bs= 4k
Para borrar un disco escribiendo datos aleatorios que podría ser otro enfoque:
dd if=/dev/urandom of=/dev/SDA bs= 4k
En comparación con el ejemplo de modificación de datos por encima de, notrunc
opción de conversión no es necesario ya que no tiene ningún efecto cuando el ddsalida del archivo es un dispositivo de bloque.[6]
El BS = 4k
opción hace dd de lectura y escritura 4 kilobytes en un momento. Para los sistemas modernos, un mayor tamaño de bloque puede ser beneficioso debido a la capacidad de transporte (sistemas RAID piensas). Tenga en cuenta que llenar el disco con datos aleatorios siempre tomará mucho más tiempo que la unidad, la reducción a cero porque los datos aleatorios deben ser prestados por la CPU o HWRNG primeros y diferentes diseños tienen características diferentes. (El PRNG detrás / dev/urandom puede ser más lento que el de libc). En mayoría relativamente modernas unidades, poner a cero la unidad prestará cualquier dato contiene permanentemente irrecuperables.[7]
Poner a cero la unidad prestará cualquier dato contiene irrecuperables por software; Sin embargo todavía puede ser recuperable por técnicas especiales de laboratorio.
El desmenuzar el programa provee un método alternativo para la misma tarea y, finalmente, la Limpie[8] programa presente en muchas distribuciones de Linux proporciona una herramienta elaborada (el que lo hace "bien", volviendo a la filosofía de Unix mencionada antes) con muchas formas de compensación.
Recuperación de datos
La historia de software de código abierto (OSS) para recuperación de datos y restauración de archivos, discos y particiones comenzó con GNU dd
en 1984, con el tamaño de una manzana por dd
proceso y ningún algoritmo de recuperación aparte de sesión interactiva del usuario ejecuta una forma de dd
tras otro. Entonces, un programa en C fue autor de octubre de 1999 llamado dd_rescue
. Cuenta con dos tamaños de bloque en su algoritmo. Pero el autor del script de shell 2003 dd_rhelp
realza dd_rescue
el algoritmo de recuperación de datos, ahora recomienda GNU ddrescue
,[9] un programa C++ que fue lanzado inicialmente en 2004 y ahora está en la mayoría de las distribuciones de Linux. GNU ddrescue
tiene el algoritmo de cambio de tamaño de bloque más sofisticado disponible en OSS.[10] Para ayudar a distinguir el programa más reciente de GNU de la escritura de la edad, los nombres alternativos se utilizan a veces para de GNU ddrescue
, incluyendo addrescue
(el nombre de freecode.com y freshmeat.net), gddrescue
(Debian nombre del paquete), y gnu_ddrescue
(openSUSE nombre del paquete).
GNU ddrescue
es estable y seguro.[11]
Otro programa de código abierto llamado savehd7
utiliza un algoritmo sofisticado, pero también requiere la instalación de su propio intérprete de lenguaje de programación.
Evaluación comparativa de rendimiento de la unidad
Para hacer en coche prueba de referencia y analizar el sistema secuencial (y generalmente single-threaded) leer y escribir rendimiento para bloques de 1024 bytes:
dd if=/dev/cero bs=1024 Conde=1000000 of= file_1GB dd if= file_1GB of=/dev/null bs=1024
Generar un archivo con datos aleatorios
Para crear un archivo de 100 bytes aleatorios usando el controlador del kernel al azar:
dd if=/dev/urandom of= myrandom bs=100 Conde=1
Convertir un archivo en mayúsculas
Para convertir un archivo en mayúsculas:
dd if= nombre_archivo of= archivo1 Conv= ucase
Creación de archivos vacíos de tamaño arbitrario
Crear un 1 GiB archivo disperso, o cambiar el tamaño de un archivo existente a 1 GiB sin sobrescribir:
dd if=/dev/cero of=myTestFile.out bs=1 Conde=0 buscar= 1G
(Es una herramienta más moderna para esto fallocate o truncarambos envían con GNU coreutils.)
Limitaciones
Seagate documentación advierte, "ciertas utilidades de disco, como DD, que dependen de acceso de bajo nivel del disco no admitan 48 bits Lba hasta que se actualicen".[12][citación necesitada] El uso de discos duros ATA sobre 128 GiB requiere LBA de 48 bits. Sin embargo, en Linux, dd
el núcleo se utiliza para leer o escribir en crudo archivos de dispositivo.[a] Compatibilidad con LBA de 48 bits ha estado presente desde la versión 2.4.23 del núcleo, lanzado en 2003.[13][14]
Dcfldd
dcfldd es un horquilla de dd que es una versión mejorada desarrollada por Nick Harbour, quien en ese momento estaba trabajando para Estados Unidos' Departamento de defensa informática forense.[15][16][17] En comparación con dd, dcfldd permite más de un archivo de salida, soporta simultáneamente múltiples cálculos de suma de comprobación, proporciona un modo de verificación para coincidir con el archivo y puede mostrar el progreso del porcentaje de una operación.
Véase también
- Copia de seguridad
- Clonación de discos
- Disk Copy
- Imagen de disco
- Lista de programas Unix
Notas
- ^ Esto es verificable con strace.
Referencias
- ^ Laboratorios de Bell. "página del comando man dd". 2009-02-25.
- ^ a b Sam Chessman. "Cómo y cuándo usar el comando dd?". CodeCoffee. de 2008-02-19.
- ^ a b Eric S. Raymond. "dd". de 2008-02-19.
- ^ Ver esta vieja discusión "El comando"dd"Unix". Alt.folklore.Computers. 2011-07-05 obtenido.
- ^ William E. Shotts, Jr. (2012). "Medios de almacenamiento 15.". "El Linux línea de comandos, una introducción completa". No hay prensa de almidón. p. 174. 24 / 08 / 2014 obtenido.
- ^ "linux - por qué utilizar conv = notrunc cuando la clonación de un disco con dd?". Desbordamiento de pila. 2013-12-11. 24 / 03 / 2014 obtenido.
- ^ Wright, Craig; Kleiman, Dave; Sundhar R.S., Shyaam (2008). "Sobrescribir los datos del disco duro: la gran controversia limpia". Lecture Notes in Computer Science. Sistemas de información de seguridad 5352:: 243-257. Doi:10.1007/978-3-540-89862-7_21. 07 de marzo de 2012.
- ^ "Limpie: garantizar la eliminación de archivos". Wipe.SF.net. 24 / 03 / 2014 obtenido.
- ^ LABORATORIO Valentin (19 de septiembre de 2011). "repositorio de dd_rhelp autor". "Nota importante: algunas veces, dd_rhelp era la única herramienta (que yo sepa) que hizo este tipo de trabajo, pero desde hace unos años, ya no es cierto: Antonio Diaz escribir un reemplazo ideal para mi herramienta: GNU 'ddrescue'."
- ^ "Disco duro dañado". www.cgsecurity.org. de 2008-05-20.
- ^ "Entrevista con Antonio Díaz Díaz de GNU ddrescue". Azul-GNU. Archivado de el original en 2008-04-15. de 2008-12-06.
- ^ Windows 137GB (128 GiB) Barrera capacidad - Seagate Technology (marzo de 2003)
- ^ "ChangeLog-2.4.23". www.kernel.org. 2009-12-07.
- ^ Linux-2.4.23 liberado Lista de correo del kernel de Linux, 2003.
- ^ "DCFLDD de Source Forge". Source Forge. 2013-08-17.
- ^ Jeremy Faircloth, Chris Hurley (2007). Kit de herramientas de pruebas de penetración código abierto. Syngress. págs. 470-472. ISBN9780080556079.
- ^ Jack Wiles, Anthony Reyes (2011). El mejor maldito ciberdelito y período de libro Digital Forensics. Syngress. págs. 408-411. ISBN9780080556086.
Enlaces externos
- :: convertir y copiar un archivo – comandos y utilidades, La especificación Single UNIX ®, Número 7 de El Open Group
- dd:: página del manual de la GNU Core Utilities.
- –Darwin y Mac OS X Comandos generales Manual
- DD para Windows.
- savehd7 - guardar una partición de disco duro dañado potencialmente
- GNU ddrescue.
- Manual de GNU ddrescue.
- dd_rescue
- dd_rhelp
- Página Softpanorama dd.
- DD en Linux preguntas Wiki.
- Cómo utilizar ddrescue para una partición de disco duro dañado la imagen y montarla en Windows.
- Los forenses (DD) Dcfldd
|
|