Entradas con tag ‘disco’

Data definition o dd para los amigos es un comando enormemente útil para manejar datos a bajo nivel, ya había hablado algo de este comando con imágenes de disquetes, pero con este también podemos crear imágenes idénticas de una partición o disco lo cual resulta interesante en diversos casos.

Uso

Su uso es realmente sencillo para operaciones simples se resume al comando y dos parámetros:

dd if=entrada of=salida

Como podemos notar, con if denotamos la entrada del comando como puede ser una partición, un dispositivo o cualquier fuente de datos, este puede ser omitido y tomara como fuente de datos la entrada estándar (stdin), lo cual es útil por ejemplo al usar tuberías (pipelines) como lo veremos mas adelante. Con of indicamos la salida de la misma forma que if puede ser un archivo, partición, salida estándar (stdout), etc.

Crear una imagen de disco o partición

dd if=/dev/sdx of=disco.img

Donde en /dev/sdx, x indica la letra que representa tu disco (a, b, c, etc.).

Para una partición de la misma forma que la anterior, pero esta vez indicamos el número de nuestra partición:

dd if=/dev/sdxn of=particion.img

Donde en /dev/sdxn, n indica el número que representa tu partición (1, 2, 3, etc.), y x ya sabes :) .

Ejemplo:

dd if=/dev/sda1 of=docs.img

Lo anterior copiará la primera partición del primer disco a docs.img.

Notas:

  • Ten en cuenta que según tu configuración puede que sea hd en lugar de sd.
  • Para acceder a los dispostitvos debes tener permisos de superusuario (root), lo puedes hacer con sudo.
  • Los dispositivos deben estar desmontados.
  • Los nombres de archivo de la salida los puedes llamar como quieras.

Crear una imagen de CD, DVD

dd if=/dev/cdrom of=imagen.iso

Clonar directamente a otra partición o disco

Esto lo hacemos cambiando el parámetro of por el dispositivo o partición.

Ejemplo:

dd if=/dev/sda1 of=/dev/sdb1

Lo anterior copiará la primera partición del primer disco a la primera partición del segundo disco.

Copiar disco en red

Para copiar información en red hacemos uso de netcat o nc, para este caso lo usaremos de los siguientes modos:

  • Modo recepción
    nc -l -p nnnn

    Esta es la configuración del computador donde almacenaremos los datos ya sea una imagen de disco o al disco directamente, los parámetros que le pasamos a netcat son:

    1. -l que le indica a netcat que debe escuchar o recibir datos.
    2. -p nnnn le dice a netcat que lea los datos en el puerto nnnn, ten preferencia en usar puertos reservados.
  • Modo transmisión

    nc host nnnn

    Esta es la configuración del computador origen en donde esta el disco o partición a ser copiado(a) o clonado(a), los parámetros que le pasamos a netcat son:

    1. host indica el nombre o IP del computador en Modo recepción.
    2. nnnn le dice a netcat que ponga los datos en el puerto nnnn del computador host, debe ser el mismo del computador en Modo recepción.

Finalmente unimos todo con tuberías quedando:

Computador destino
nc -l -p nnnn | dd of=salida
Computador origen
dd if=entrada | nc host nnnn

Podemos usar compresión de la siguiente forma:

Computador destino
nc -l -p nnnn | gunzip | dd of=salida
Computador origen
dd if=entrada | gzip | nc host nnnn

Ejemplo:

Clonaremos un disco de un computador a otro:

Computador destino (192.168.1.5)
nc -l -p 1234 | dd of=/dev/sda
Computador origen
dd if=/dev/sda | nc 192.168.1.5 1234

Esto es útil por ejemplo cuando tenemos varios computadores con el mismo hardware y todos requieren la misma configuración en su software, simplemente clonamos el disco, o para realizar una copia de nuestra configuración actual para posteriormente restaurarla :) .

Referencias: