mandato dd

Finalidad

Convierte y copia un archivo.

Sintaxis

dd [ bs=TamañoBloque ][cbs=TamañoBloque ]

[conv= [ ascii |block|ebcdic | ibm | unblock ]

[lcase | ucase ] [iblock ]

[noerror ] [swab ] [sync ]

[oblock ] [notrunc ]][recuento =

InputBlocks ] [ archivos=Archivos de entrada ] [fskip=

SkipEOFs ] [ ibs=InputBlockSize ] [si=

InFile ] [ obs=OutputBlockSize ] [de=

OutFile ] [ buscar=RecordNumber ] [skip=

SkipInputBlocks ][ span=sí|no ]

dd [ Option=Valor ]

Descripción

El mandato dd lee el parámetro InFile o la entrada estándar, realiza las conversiones especificadas y, a continuación, copia los datos convertidos en el parámetro OutFile o salida estándar. El tamaño de bloque de entrada y salida se puede especificar para aprovechar la E/S física en bruto.
Nota: El término Bloque hace referencia a la cantidad de datos leídos o grabados por el mandato dd en una operación y no tiene necesariamente el mismo tamaño que un bloque de disco.

Cuando se especifican tamaños, se espera un número de bytes. Un número que termina con w, bo k especifica la multiplicación por 2, 512 o 1024 respectivamente; un par de números separados por una x o un * (asterisco) indica un producto. El parámetro de recuento espera que se copie el número de bloques, no el número de bytes.

Las correlaciones de juegos de caracteres asociadas con los distintivos conv=ascii y conv=ebcdic son operaciones complementarias. Estos distintivos se correlacionan entre caracteres ASCII y el subconjunto de caracteres EBCDIC que se encuentra en la mayoría de estaciones de trabajo y keypunches.

Utilice el valor del parámetro cbs si especifica alguna de las conversiones block, unblock, ascii, ebcdico ibm . Si se especifican los parámetros unblock o ascii , el mandato dd realiza una conversión de longitud fija a longitud variable. De lo contrario, realiza una conversión de longitud variable a longitud fija. El parámetro cbs determina la longitud fija.

Atención: Si el valor del parámetro cbs se especifica más pequeño que el bloque de entrada más pequeño, el bloque convertido se trunca.

Cuando finaliza, el mandato dd informa del número de bloques de entrada y salida completos y parciales.

Nota:
  1. Normalmente, sólo necesita acceso de escritura al archivo de salida. Sin embargo, cuando el archivo de salida no está en un dispositivo de acceso directo y utiliza el distintivo seek , también necesita acceso de lectura al archivo.
  2. El mandato dd inserta caracteres de nueva línea sólo al convertir con los distintivos conv=ascii o conv=unblock establecidos; sólo se rellena al convertir con los distintivos conv=ebcdic, conv=ibmo conv=block establecidos.
  3. Utilice el mandato backup, taro cpio en lugar del mandato dd siempre que sea posible para copiar archivos en cinta. Estos mandatos están diseñados para su uso con dispositivos de cinta. Para obtener más información sobre el uso de dispositivos de cinta, consulte el archivo especial rmt .
  4. Los valores de tamaño de bloque especificados con los distintivos bs, ibs y obs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando.
  5. Cuando se especifica el distintivo conv=sync , el mandato dd rellena los bloques de entrada parciales con nulos. Por lo tanto, el mandato dd inserta valores nulos en el medio de la secuencia de datos si alguna de las lecturas no recibe un bloque completo de datos (tal como especifica el distintivo ibs ). Esto es una ocurrencia común al leer de las tuberías.
  6. Si el distintivo bs se especifica por sí mismo y no se especifica ninguna conversión que no sea sync, noerror o notrunc , los datos de cada bloque de entrada se grabarán como un bloque de salida independiente; si la lectura devuelve menos de un bloque completo y no se especifica sync , el bloque de salida resultante tendrá el mismo tamaño que el bloque de entrada. Si no se especifica el distintivo bs , o se especifica una conversión que no sea sync, noerror o notrunc , la entrada se procesará y se recopilará en bloques de salida de tamaño completo hasta que se alcance el final de la entrada.

Expansión entre dispositivos

La dd se puede realizar para abarcar todos los dispositivos si el archivo de entrada es mayor que el tamaño físico del dispositivo de salida.
Nota: Hay que tener cuidado al especificar el tamaño de bloque bs como múltiplo exacto del tamaño físico del dispositivo porque un tamaño de bloque incorrecto dará como resultado una incoherencia de datos o un solapamiento.

La expansión de dd entre dispositivos no se producirá si uno de los parámetros InFile o OutFile es stdin o stdout.

La expansión se producirá de tal forma que dd solicitará el siguiente dispositivo durante la grabación si el dispositivo de salida está lleno. Durante la lectura desde el dispositivo de entrada, dd solicitará el siguiente dispositivo si los datos se leen completamente desde el dispositivo de entrada incluso cuando el dispositivo no ha llegado al final. En este caso sería necesario presionar ' n' para salir.

Distintivos

Elemento Descripción
bs=TamañoBloque Especifica el tamaño de bloque de entrada y salida, reemplazando los distintivos ibs y obs . Los valores de tamaño de bloque especificados con el distintivo bs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando.
cbs=TamañoBloque Especifica el tamaño de bloque de conversión para conversiones de longitud variable a longitud fija y de longitud fija a longitud variable, como por ejemplo conv=block.
count=Bloques de entrada Sólo copia el número de bloques de entrada especificados por la variable InputBlocks .
conv= Conversión,.... Especifica una o más opciones de conversión. Las conversiones múltiples deben estar separadas por comas. La lista siguiente describe las opciones posibles:
ASCII
Convierte EBCDIC a ASCII. Esta opción es incompatible con las opciones ebcdic, ibm, blocky unblock .
bloque
Convierte registros de longitud variable en longitud fija. La longitud viene determinada por el tamaño de bloque de conversión (cbs). Esta opción es incompatible con las opciones ascii, ebcdic, ibmy unblock .
EBCDIC
Convierte ASCII a EBCDIC estándar. Esta opción es incompatible con las opciones ascii, ibm, blocky unblock .
ibm
Convierte ASCII a una versión IBM® de EBCDIC. Esta opción es incompatible con las opciones ascii, ebcdic, blocky unblock .
iblock, obloque
Minimice la pérdida de datos resultante de un error de lectura o grabación en dispositivos de acceso directo. Si especifica la variable ' iblock ' y se produce un error durante la lectura de un bloque (donde el tamaño del bloque es 512 o el tamaño especificado por la variable ' ibs=' 'InputBlockSize ), el comando ' dd ' intenta volver a leer el bloque de datos en unidades de tamaño más pequeñas. Si el mandato dd puede determinar el tamaño de sector del dispositivo de entrada, lee el bloque dañado de un sector a la vez. De lo contrario, lo lee 512 bytes a la vez. El tamaño de bloque de entrada ( ibs) debe ser un múltiplo de este tamaño de reintento. Esta opción contiene la pérdida de datos asociada a un error de lectura en un único sector. La conversión de oblock funciona de forma similar en la salida.
Minús
Hace que todos los caracteres alfabéticos estén en minúsculas.
sin error
No detiene el proceso en un error.
notrunc
No trunca el archivo de salida. En su lugar, se conservan los bloques no escritos explícitamente en la salida.
ucase
Convierte todos los caracteres alfabéticos en mayúsculas.
hisopo
Intercambia cada par de bytes.
sync
Rellena cada bloque de entrada con el valor ibs .
desbloquear
Convierte bloques de longitud fija en longitud variable. La longitud viene determinada por el tamaño de bloque de conversión (cbs). Esta opción es incompatible con las opciones ascii, ebcdic, ibmy block .
files=Archivosde entrada Copia el número de archivos especificados por el valor de la variable InputFiles de los archivos de entrada antes de finalizar (sólo tiene sentido cuando la entrada es una cinta magnética o un dispositivo similar).
fskip=SaltarEOFs Omite el número de caracteres de fin de archivo especificados por la variable SkipEOFs antes de empezar a copiar; esta variable SkipEOFs es útil para el posicionamiento en cintas magnéticas multiarchivo.
ibs=InputBlockSize Especifica el tamaño de bloque de entrada; el valor predeterminado es 512 bytes o un bloque. Los valores de tamaño de bloque especificados con el distintivo ibs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando.
si=InFile Especifica el nombre del archivo de entrada; la entrada estándar es el valor predeterminado.
obs=OutputBlockSize Especifica el tamaño de bloque de salida; el valor predeterminado es 512 bytes o un bloque. Los valores de tamaño de bloque especificados con el distintivo obs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando.
of=Archivode salida Especifica el nombre del archivo de salida; la salida estándar es el valor predeterminado.
buscar=RecordNumber Busca el registro especificado por la variable RecordNumber desde el principio del archivo de salida antes de copiarlo.
skip=SaltarBloquesDeEntrada Omite el valor especificado de SkipInputBlocks de los bloques de entrada antes de empezar a copiar.
span=sí|no Permite la expansión entre dispositivos si se especificayesy funciona como valor predeterminado si se especifica comono. Consulte Expansión entre dispositivos, para obtener más información.

Estado de salida

Este mandato devuelve los siguientes valores de salida:

Elemento Descripción
0 El archivo de entrada se ha copiado correctamente.
>0 Se ha producido un error.

Ejemplos

  1. Para convertir un archivo de texto ASCII a EBCDIC, escriba:Este mandato convierte eltext.asciien la representación EBCDIC, almacenando la versión EBCDIC en latext.ebcdic.xlsx
    Nota: Al especificar el parámetro conv=ebcdic , el mandato dd convierte el carácter ASCII ^ (circunflejo) en un carácter EBCDIC no utilizado (9A hexadecimal) y el ASCII ~ (tilde) en el EBCDIC ^ (símbolo NOT).
  2. Para convertir el archivo ASCII de registro de longitud variable /etc/passwd en un archivo de registros EBCDIC de longitud fija de 132 bytes, escriba:
  3. Para convertir el archivo EBCDIC de 132 bytes por registro en líneas ASCII de longitud variable en minúsculas, escriba:
  4. Para convertir el archivo ASCII de registro de longitud variable /etc/passwd en un archivo de registros de longitud fija de 132 bytes en la versión IBM de EBCDIC, escriba:
  5. Para copiar bloques de una cinta con bloques de 1KB en otra cinta utilizando bloques de 2KB , escriba:
  6. Para utilizar el mandato dd como filtro, escriba:
    ls -l | dd  conv=ucase
    Este mandato muestra un listado largo del directorio actual en mayúsculas.
    Nota: El rendimiento del mandato dd y del mandato cpio en la unidad de cinta magnética 9348 Modelo 12 se puede mejorar cambiando el tamaño de bloque predeterminado. Para cambiar el tamaño de bloque, utilice el mandato chdev de la siguiente manera:
    chdev -l Device_name -a block_size=32k
  7. Para realizar transferencias eficientes al disquete de 3.5-inch 1.4MB utilizando 36 bloques de 512 bytes, escriba:

    Este mandato escribe el valor del parámetro Filename en el dispositivo de disquete un cilindro a la vez. Los 2conv=synces necesario al leer del disco y cuando el tamaño de archivo no es un múltiplo del tamaño de bloque de disquete. No intente esto si la entrada del mandato dd es un conducto en lugar de un archivo, rellenará la mayor parte de la entrada con nulos en lugar de sólo el último bloque.

  8. Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 720b bloques en un tipo de disquete de tamaño 1.44MB :
    dd if=testfile of=/dev/fd0 bs=720b conv=sync
    Nota: Si el archivo de entrada es mayor que el tamaño físico del dispositivo de salida, dd le solicitará otro dispositivo.
  9. Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 32k bloques en un tipo de cinta:
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync
  10. Para copiar bloques de datos de cinta en un archivo del directorio actual con el tamaño de bloque establecido en 32k bloques, escriba lo siguiente:
    dd if=/dev/rmt0 of=outfile bs=32k conv=sync
  11. Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 720b, en un disquete de tamaño 1.44MB , entre:
    dd if=testfile of=/dev/fd0 bs=720b conv=sync span=yes
    Nota: Si el archivo de entrada es mayor que el tamaño físico del dispositivo de salida, dd le solicitará otro dispositivo.
  12. Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 32k, en una cinta, entre:
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync span=yes
  13. Para copiar bloques de datos de cinta con el tamaño de bloque establecido en 32k, en un archivo del directorio actual, entre:
    dd if=dev/rmt0 of=outfile bs=32k conv=sync span=yes

Archivos

Elemento Descripción
/usr/bin/dd Contiene el mandato dd .