Entradas con tag ‘disco’
Publicado por evelio hace 1154 dias, en: Colombia Think Linux, Desarrollo, Sistemas Operativos, Ubuntu, Vida.
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:
- -l que le indica a netcat que debe escuchar o recibir datos.
- -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:
- host indica el nombre o IP del computador en Modo recepción.
- 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:
- Bitácora de Vicente Puchades
- man dd
- man nc
Tags: clonar, copiar, crear, dd, disco, imagen, linux, netcat, partición, Ubuntu
