viernes, 5 de septiembre de 2014

Compendio de usos utiles del comando UNIX dd

Bookmark:
  • Agregar a Technorati
  • Agregar a Del.icio.us
  • Agregar a DiggIt!
  • Agregar a Yahoo!
  • Agregar a Google
  • Agregar a Meneame
  • Agregar a Furl
  • Agregar a Reddit
  • Agregar a Magnolia
  • Agregar a Blinklist
  • Agregar a Blogmarks
dd (Unix)
De Wikipedia, la enciclopedia libre
dd es un común Unix programa cuyo objetivo principal es el bajo nivel de la copia y conversión de crudos de datos . dd es una aplicación que va a "convertir y copiar un archivo" [ 1 ] de acuerdo con la página del manual de referencia para la versión 7 de Unix, y es más probablemente inspirado en DD en IBM JCL , y la sintaxis del comando es la intención de ser una reminiscencia de este; [ 2 ] en JCL, "DD" es sinónimo de descripción de datos. [ 3 ] dd se utiliza para copiar un número especificado de bytes o bloques , la realización de la marcha de bytes para las conversiones, así como más esotérico EBCDIC a ASCII conversiones. [ 4 ] dd también se puede usar para copiar regiones de los archivos de dispositivo sin procesar, por ejemplo, copia de seguridad del sector de arranque de un disco duro , o para leer cantidades fijas de datos de archivos especiales como / dev / zero o / dev / random . [ 5 ]
Se dijo en broma que significan "destructor del disco", "destructor de datos", "muerte y destrucción", o "borrar datos", ya que se utiliza para operaciones de bajo nivel en discos duros, un pequeño error, como la inversión de la si y de los parámetros, tal vez puede resultar en la pérdida de los datos de algunas o todas en un disco. [ 4 ]
Contenido [ ocultar ]
Un uso
2 mensajes de salida
3 discos ATA más de 128 MiB
4 orientado a la recuperación de variantes dd
5 Véase también
6 Referencias
7 Enlaces externos
[ editar ] Uso

La línea de comandos de sintaxis de dd es significativamente diferente de la mayoría de los programas de Unix, y debido a su ubicuidad, es resistente a los recientes intentos de imponer una sintaxis común para todas las herramientas de línea de comandos. Por lo general, dd utiliza una opción = valor de formato, mientras que la mayoría de los programas de Unix utilizar la opción-valor o - opción = valor de formato. Además, dd de entrada "s se define con el" si "( i nput f ile) opción, mientras que la mayoría de los programas simplemente toman el nombre por sí mismo. Se rumorea que se han basado en IBM, JCL , y aunque la sintaxis puede haber sido una broma, [ 2 ] , parece que nunca ha habido ningún esfuerzo para escribir una más Unix, como el reemplazo.
Ejemplo del uso de dd comando para crear una imagen de disco ISO de un CD-ROM:
dd if = / dev / cdrom of = / home / sam / mycd.iso bs = 2048 conv = sync
Tenga en cuenta que un intento de copiar la imagen del disco entero usando cp puede omitir el bloque final, si se trata de una longitud inesperada [ cita requerida ] ; dd siempre completa la copia si es posible.
Usando dd para borrar todo un disco con datos aleatorios:
dd if = / dev / urandom of = / dev / hda
Usando dd para duplicar una partición del disco duro a otro disco duro:
dd if = / dev/sda2 of = / dev/sdb2 bs = 4096 conv = noerror
Usando dd para clonar un disco duro a otro disco duro:
dd if = / dev/ad0 of = / dev/ad1 bs = 1M conv = noerror
donde ad0 es el disco duro de origen y ad1 es el disco duro de destino en FreeBSD, donde los dispositivos de disco duro son nombrados ad
El noerror opción de conversión de medios para seguir adelante si hay un error (aunque una mejor herramienta para esto sería ddrescue ).
Duplicar una partición de disco como una imagen de disco de archivos en un ordenador remoto a través de una conexión segura ssh:
 dd if = / dev/sdb2 | ssh user @ host "dd / = / home del usuario / partition.image"
Sobrescribir los primeros 512 bytes de un archivo con bytes nulos:
 dd if = / dev / zero of = ruta / al / archivo bs = 512 count = 1 conv = notrunc
El notrunc significa conversión opción de no truncar el archivo de salida - es decir, si el archivo de salida ya existe, cambiando los bytes especificados y dejar el resto del archivo de salida solo. Sin esta opción, dd crearía un archivo de salida de 512 bytes.
Para duplicar una partición de disco como una imagen de disco de archivos en una partición diferente:
 dd if = / dev/sdb2 of = / home / sam / bs partition.image = 4096 conv = noerror
Crear un 1 GiB archivo que contiene sólo ceros (bs = tamaño de bloque, el recuento = número de bloques):
 dd if = / dev / zero of = file1G.tmp bs = 1M count = 1024 
A cero fuera de una unidad:
 dd if = / dev / zero of = / dev / sda
Para asegurarse de que la unidad es en realidad llevado a cero:
 dd if = / dev / sda | hexdump-C | cabeza
La salida de este comando será similar al siguiente si la unidad está en blanco:
 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * |................| 201f78000 16841664 0 16841664 0 registros en los registros de 8,622,931,968 bytes ( 8,6 GB) copiados, 1247,05 s, 6,9 MB / s
Si la unidad está en blanco, una línea de bytes en blanco será impreso, seguido por un '*' significa repetir las líneas en blanco, seguido por una línea que indica la dirección de la línea que pone fin a la repetición, seguido por las estadísticas que se imprimen después de la de salida. Los números en las estadísticas anteriores son ilustrativos. Si la unidad no está completamente en blanco, habrá más de una línea de salida de datos.

Para duplicar los primeros dos sectores del disco:
 dd if = / dev/fd0 of = / home / sam / MBRboot.image bs = 512 count = 2
Para crear una imagen de todo el registro de inicio maestro (incluyendo la tabla de particiones ):
 dd if = / dev / sda of = / home / sam / MBR.image bs = 512 count = 1
Para crear una imagen de sólo el código de arranque del registro de inicio maestro (sin la tabla de particiones):
 dd if = / dev / sda of = / home / sam / MBR_boot.image bs = 446 count = 1
Para hacer una prueba de manejo de referencia y analizar la secuencia de lectura y escritura de bloques de 1024 bytes:
 dd if = / dev / zero bs = 1024 count = 1000000 of = / home/sam/1Gb.file dd if = / bs = 64k home/sam/1Gb.file | dd of = / dev / null
Para crear un archivo de 100 bytes al azar:
 dd if = / dev / urandom of = / home / sam / myrandom bs = 100 count = 1
Para convertir un archivo en mayúsculas:
 dd if = nombre de archivo de nombre de archivo = conv = ucase
Para buscar en la memoria del sistema:
 dd if = / dev / mem | grep 'un trozo de cuerda-de-palabras-en-el-archivo-que-olvidado-a-guardar-antes-de-hit-la-cerca de un botón'
La imagen de una partición a otra máquina:
 El equipo de origen: dd if = / dev / hda bs = 16065b | netcat 1234 El equipo de destino: netcat-l-p 1234 | dd of = / dev / hdc bs = 16065b
Enviando una señal SIGINFO (o una señal USR1 en Linux) a un proceso en marcha `dd 'hace de impresión de E / S a las estadísticas de error estándar y luego reanudar la copia:
$ Dd if = / dev / zero of = / dev / null & pid = $! $ Kill-USR1 pid $ 18.335.302 0 0 18.335.302 registros en los registros de 9387674624 bytes (9,4 GB) copiados, 34,6279 segundos, 271 MB / s 
Crear un 1 GiB archivo disperso o cambiar el tamaño de un archivo existente a 1 GiB sin sobrescribir:
 dd if = / dev / zero of = mytestfile.out bs = 1 count = 0 buscar = 1G
Algunas implementaciones de entender x como un operador de multiplicación en el tamaño del bloque y los parámetros de conteo:
dd bs = 2x80x18b if = / dev/fd0 of = / tmp / floppy.image
donde la "b" sufijo indica que las unidades son bloques de 512 bytes. Unix los dispositivos de bloque lo utilizan como su unidad de asignación por defecto.
Por el valor del campo bs, el siguiente número decimal puede ser el sufijo:
 w significa 2 b significa 512 k significa 1.024 M especifica la multiplicación por 1024 * 1024 G especifica la multiplicación por 1024 * 1024 * 1024
Por lo tanto bs = 2 * 80 * 18 ter medios, 2 * 80 * 18 * 512 = 1.474.560, que es el tamaño exacto de 1440 KiB disquete
Para montar la imagen: mount-o loop floppy.image / mntpoint
[ editar ] mensajes de salida

La variante de GNU dd que se suministra con Linux no describe el formato de los mensajes que aparecen en la salida estándar de terminación, sin embargo estos se describen por otras aplicaciones, por ejemplo que con BSD.
"Los registros de" cada uno de los "Registros en" líneas y muestra el número de bloques completos transferidos + el número de bloques parciales, por ejemplo, porque el medio físico, terminaron antes de un bloqueo completo fue leído.
[ editar ] Los discos ATA más de 128 MiB

Seagate documentación advierte: "Algunas utilidades de disco, como DD, que dependen del acceso de disco de bajo nivel no sea compatible con 48 bits LBA hasta que se actualicen. " [ 6 ] LBA de 48 bits se requiere para discos duros ATA más de 128 GiB en tamaño. Sin embargo, en Linux , dd utiliza el kernel para leer o escribir en primas ficheros de dispositivo . [ 7 ] Soporte para LBA de 48 bits ha estado presente desde la versión 2.4.23 del kernel. [ 8 ] [ 9 ]
[ editar ] orientadas a la recuperación de variantes dd

De código abierto basado en UNIX de los programas de rescate incluyen dd_rescue y dd_rhelp , que trabajan juntos, savehd7 , o GNU ddrescue .
Antonio Díaz Díaz (el creador de GNU ddrescue) Compara [ 10 ] variantes de la tarea de rescatar el dd para:
La utilidad estándar dd hace una lectura lineal de la unidad, por lo que puede tomar mucho tiempo o incluso freír el disco sin rescatar nada si los errores son al principio de la unidad. Kurt Garloff de dd_rescue hace básicamente lo mismo que dd, sólo de manera más eficiente. LAB Valentín dd_rhelp es un shell script que se ejecuta complejos veces dd_rescue muchos Garloff, tratando de ser estratégico sobre la copia de la unidad, pero es muy ineficiente.
dd_rhelp primero extrae todos los datos legibles, y lo guarda en un archivo, insertando ceros en bytes no se puede leer. Entonces se trata de volver a leer los datos no válidos y actualizar este archivo.
GNU ddrescue se puede utilizar para copiar los datos directamente en un disco nuevo si es necesario, al igual que Linux dd.
dd_rhelp o GNU ddrescue dará lugar a una imagen completa del disco, más rápido, pero posiblemente con algunos errores. GNU ddrescue es generalmente mucho más rápido, como está escrito enteramente en C + + , mientras que dd_rhelp es un script de shell actúa como un frontend para dd_rescue. Ambos dd_rhelp y objetivo GNU ddrescue para copiar datos rápidamente, donde no hay errores, y luego copiar en bloques más pequeños y con reintentos donde hay errores. GNU ddrescue es fácil de usar con las opciones predeterminadas, y puede ser descargado y compilado en Linux basado en Live CD como Knoppix , y puede ser utilizado con SystemRescueCD .
GNU ddrescue ejemplo [ 11 ]
# En primer lugar, tomar la mayoría de las áreas libres de errores en un apuro: 
ddrescue -n  / dev / old_disk / dev / new_disk rescued.log
 # luego tratar de recuperar la mayor cantidad de áreas arriesgada posible: 
ddrescue -r  1  / dev / old_disk / dev / new_disk rescued.log
Savehd7 guarda la partición de disco duro en varias fases [ 12 ] . Por lo tanto, no es necesario llamar a savehd7 con diferentes parámetros. Savehd7 trabaja de forma interactiva en modo texto y muestra el progreso mientras se trabaja. Por ejemplo:
  Procesamiento - Pulse cualquier tecla para hacer una pausa (puede tardar algún tiempo para reaccionar) el progreso: okay: bloqueos mal: bytes mal:: fixed copia 2.6568% 2.6568% 0.0000% 0.0000% 0     
Hay grandes diferencias en la forma de errores en el disco son procesados ??por varios núcleos. Los sistemas operativos como FreeBSD, NetBSD, OpenBSD, Solaris, así como diferentes núcleos de Linux (es decir, hda vs sda (<2 .6.20="" adem="" bajo="" bloques="" bsd="" como="" comportan="" consola.="" crudo="" datos.="" de="" deseable="" desee="" diferente.="" disco="" dispositivos="" dmesg="" donde="" el="" en="" error.="" error="" es="" grandes="" hace="" la="" lectura="" linux="" lo="" los="" m="" manera="" menos="" mensajes="" n="" nivel="" no="" ocultar="" ocurri="" para="" posible="" prima="" que="" real="" recuperaci="" s="" se="" solicitado="" span="" tail-n8="" tiene="" ubicaci="" utilizar="" ver="">

No hay comentarios: