Ir al contenido

Diferencia entre revisiones de «Dd (Unix)»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
m Revertidos los cambios de 201.191.255.32 (disc.) a la última edición de 84.127.2.238
Sin resumen de edición
Etiquetas: Edición desde móvil Edición vía web móvil
Línea 24: Línea 24:


Los principales parámetros son:
Los principales parámetros son:
Gn

; if=''origen'' : Lee desde el archivo indicado como origen. Por defecto lee de la [[entrada estándar]].
; if=''origgcddwvcclen'' : Lee desde el archivo indicado como origen. Por defecto lee de la [[entrada estándar]].


; of=''destino'' : Escribe al archivo indicado como ''destino''. Por defecto escribe en la [[salida estándar]].
; of=''destino'' : Escribe al archivo indicado como ''destino''. Por defecto escribe en la [[salida estándar]].

Revisión del 23:36 11 nov 2017

dd es un comando de la familia de los sistemas operativos Unix que permite copiar y convertir datos de archivos[1]​ a bajo nivel.

Es generalmente usado para realizar operaciones avanzadas sobre dispositivos o archivos, como pueden ser:

  • Transferencias de datos específicos.
  • Copias de seguridad de la información «en crudo» (raw data).
  • Conversión de algunas codificaciones soportadas y/o caracteres predefinidos.

Descripción

Es importante señalar que, en sistemas operativos Unix, cualquier dispositivo se trata y gestiona como un archivo. Por tanto, el comando dd puede ser utilizado con diversos dispositivos y volúmenes (particiones), más allá de los archivos propiamente dichos.

Según la especificación POSIX, dd copia el archivo indicado como origen en el archivo indicado como destino, teniendo en cuenta la conversión de los datos y el tamaño de bloque requerido. Si no se hubiera especificado el origen o el destino, dd por defecto utilizaría la entrada o la salida estándar, respectivamente, para llevar a cabo la operación.

Si se ha especificado el tamaño de bloque a transferir (mediante el parámetro bs) y no se ha indicado conversión alguna salvo noerror, notrunc o sync, se procede a la lectura, bloque por bloque, del archivo origen, y a su correspondiente escritura en el destino. El tamaño del bloque a escribir es idéntico al del bloque leído, salvo que se indique la conversión sync, en cuyo caso se procede a rellenar con ceros el bloque de destino. Si no se utiliza sync, el último bloque escrito puede ser de tamaño inferior al resto.

Por último, en caso de que no se haya especificado un tamaño de bloque, dd usa 512 bytes como tamaño por defecto.

Modo de uso

La invocación del comando dd tiene el siguiente formato:

 dd [PARÁMETRO] ...

Los principales parámetros son: Gn

if=origgcddwvcclen
Lee desde el archivo indicado como origen. Por defecto lee de la entrada estándar.
of=destino
Escribe al archivo indicado como destino. Por defecto escribe en la salida estándar.
ibs=N
Lee N bytes del archivo origen.
obs=N
Escribe N bytes en el archivo destino.
bs=N
Lee y escribe N bytes. Alternativa a usar ibs y obs con un mismo valor.
cbs=N
Establece en N bytes al tamaño del bloque de conversión para block y unblock.
skip=N
Se salta N bloques del archivo origen antes realizar la operación de copiado. El tamaño del bloque es indicado por ibs.
seek=N
Se salta N bloques del archivo destino antes realizar la operación de copiado. El tamaño del bloque es indicado por obs.
count=N
Copia N bloques del archivo origen, en vez de procesar hasta el final. El tamaño del bloque es indicado por ibs.
conv=modo[, modo,...]
Realiza las operaciones de conversión, según se indique. Se puede indicar más de una conversión, separándolas por comas.
Conversiones soportadas:
ascii
Convierte los caracteres EBCDIC a ASCII.
ebcdic
Convierte los caracteres ASCII a EBCDIC.
ibm
Convierte los caracteres ASCII al EBCDIC de IBM.
lcase
Intercambia las mayúsculas por minúsculas.
ucase
Intercambia las minúsculas por mayúsculas.
swab
Intercambia cada par de bytes de la entrada. Para el caso especial del último byte, este se copia directamente.
noerror
No se detiene el proceso ante errores de lectura en el origen.
notrunc
No se trunca el archivo utilizado como destino.
sync
Rellena cada bloque leído con ceros, hasta el tamaño determinado por ibs.
block
Rellenar con espacios en blanco la línea leída, hasta el tamaño indicado por cbs. Reemplaza el carácter de nueva línea por espacios, convirtiendo la línea en un bloque (o registro).
unblock
Reemplazar los últimos espacios en blanco por un carácter de salto de línea del registro leído, que posea el tamaño indicado por cbs. Realiza la operación inversa a block.

Usos

Dada la naturaleza del comando dd de operar a bajo nivel (bytes), es posible utilizarlo para diversos fines.

Eliminación de datos

Se realiza un formateo a medio nivel (sustituir todos los bits del disco archivo o carpeta por 0) mediante (con permisos de root) dd if=/dev/zero of=(archivo, directorio o disco a borrar). Sin embargo esto deja abierta la posibilidad de leer los datos presentes antes del borrado en el disco mediante métodos avanzados. Si se quiere una protección completa, en lugar de escribir ceros en el disco, se recomienda escribir datos aleatorios utilizando dd if=/dev/urandom of=(archivo, directorio, o disco a borrar). El generador de números aleatorios urandom funcionará de forma ligeramente diferente en los distintos tipos de sistemas UNIX, por lo que es recomendable verificarlo antes de utilizarlo.

Otros usos

Otro de los principales usos del comando dd es la creación de unidades USB autoarrancables, mediante la sintaxis:

 dd if=/<ruta_imagen.iso> of=/dev/sdN

Donde N es la unidad USB que necesitamos autoarrancar.

Véase también

Enlaces externos

Referencias

  1. @aa-page/POSIX/1/dd/