Jump to content

dd: clona y graba discos duros fácilmente


Fransis
 Share

Recommended Posts

Con vuestro permisos, voy a dejar por aqui otro pequeño manualillo que muchas veces tengo que consultar y siempre acabo en diferentes lares. por eso lo quiero dejar aqui, con el resto de las cosas tan interesantes que tenemos en "esta nuestra comunidad".

 

El comando dd (Dataset Definition), es una herramienta sencilla, útil, y sorprendente, a la vez que desconocida por muchos. Esta aplicación fue creada a mediados de los 70, en principio para Unix, simplemente porque no existía. Pero al contrario que otras herramientas que desde su creación se han ido sofisticando, ésta se ha ido simplificando, hasta el punto de poder hacer lo mismo que buenos programas comerciales como Norton Ghost o libres como CloneZilla, con sólo una pequeña orden en la línea de comandos.

Ni que decir tiene que toda la información de dd la podéis consultar con el comando man dd e info dd, también dos grandes olvidados…

Al lío…

Lo primero siempre es tener claro el disco duro de origen y el de destino, algo que averiguamos fácilmente con el comando (como root) fdisk -l.

La sintaxis más básica, sería ésta [como root]:

dd if=[origen] of=[destino]

Por lo que si quisiéramos clonar un disco duro:

dd if=/dev/hda of=/dev/hdb bs=1M con esto clonaríamos el disco hda en hdb. (discos IDE)

O:

dd if=/dev/sda of=/dev/sdb bs=1M para discos SATA

Con bs=1M, estamos diciendo que tanto la lectura como la escritura se haga en bloques de 1 megabyte (menos, sería más lento pero más seguro, y con más nos arriesgamos a perder datos por el camino).

Hay que tener en cuenta que de esta forma grabarás el disco “tal cual”, MBR, tabla de particiones, espacio vacío, etc., por lo que sólo podrás grabar en un disco del mismo o mayor tamaño.

Vamos a ver algunos ejemplos prácticos y opciones de este comando:

dd if=/dev/hda1 of=/dev/hdb bs=1M

Grabaríamos sólo la primera partición del disco de origen en el de destino.

dd if=/dev/hda of=/dev/hdb1 bs=1M

Grabaríamos el disco completo en la primera partición del disco de destino.

dd if=/dev/hda of=/home/hda.bin

Crear una imagen del disco duro, puede ser bin o iso (a partir de ahora utilizaré nuestro home como ejemplo). Como root:

dd if=/dev/hda | gzip > /home/hda.bin.gz

Crearíamos con el anterior comando una imagen del disco comprimida, (podemos utilizar gzip, bzip o bzip2.)

Crea una imagen de un CD:

dd if=/dev/cdrom of=/home/imagendeCD.iso

Para montar la imagen del CD:

mount -o loop imagedeCD.iso /mnt/home

Copiar el Master Boot Record:

dd if=/dev/hda of=mbr count=1 bs=512

Para restaurar el MBR:

dd if=mbr of=/dev/hda

Copiar el Volume Boot Sector (VBS):

dd if=/dev/hda of=/home/sector_arranque_hda count=1 bs=512

Para restaurar el VBS:

dd if=/home/sector_arranque_hda of=/dev/hda

Algunas curiosidades:

Recuperar un DVD rayado:

dd if=/dev/cdrom of=/home/dvd_recuperado.iso conv=noerror,sync

Esto no recupera todo el DVD, en este caso, sólo los sectores legibles. Sirve también para discos duros defectuosos.
La opción noerror sirve para obviar los errores de lectura en cualquier situación. Otro ejemplo sería:

dd conv=noerror if=/dev/hda of=~/home/imagen_disco_con_errores.iso

Grabaríamos con ello una imagen del disco duro en nuestro home saltándonos los errores del disco (muy útil para discos que se están muriendo).

Limpia nuestro MBR y la tabla de particiones:

dd if=/dev/zero of=/dev/hda bs=512 count=1

Limpia el MBR pero no toca la tabla de particiones (muy útil para borrar el GRUB sin perder datos en las particiones):

dd if=/dev/zero of=/dev/hda bs=446 count=1

Crea un archivo vacío de 1 Mb, una opción muy interesante como ahora veremos:

dd if=/dev/zero of=archivo_nuevo_vacio bs=1024 count=1024

Crear un archivo swap de 2Gb así de fácil:

sudo dd if=/dev/zero of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace

Al borde de la paranoia… Convierte todas las letras en mayúsculas:

dd if=miarchivo of=miarchivo conv=ucase

Cambia en todo el disco, la palabra Puigcorbe por Slqh, ( puedes cambiar rápidamente tu nombre a todos los archivos del disco):

dd if=/dev/sda | sed ‘s/Puigcorbe/Slqh/g’ | dd of=/dev/sda

Llena el disco con caracteres aleatorios cinco veces. No va a quedar ni rastro de información en el disco icon_razz.gif :

for n in {1..5}; do dd if=/dev/urandom of=/dev/hda bs=8b conv=notrunc; done

(*) Nota final: utiliza este comando con precaución, y asegúrate siempre del orden y nombre de tus discos duros, porque lo mismo que te clona un disco te lo borra ‘en un plis’.

 

Fuente: http://linuxzone.es/dd-clona-y-graba-discos-duros-facilmente/

Edited by Fransis
Link to comment
Share on other sites

Bueno, gracias pero realmente el que se ha dado el currazo con ese pedazo de tutorial a sido un tal Elias Hidalgo. siempre acabo con diferentes tutoriales, manuales, y este me ha parecido siempre el mas completo y mejor explicado.

vale, ahora que tenemos esto por aqui, voy a exponer una duda que tengo.

tengo un sistema operativo windows en un pendrive de 8gb y lo estoy intentando clonar en un pendrive de 2gb. el windows es un windows xp que cabe perfectamente en el de 2gb.

si copio tal cual de (sda a sdb), no me arranca, el contenido y eso lo copia correctamente pero no hace el autorranque. y si copio solo las particiones, por ejemplo de (sda1 a sdb1), me dice que no hay espacio en el pendrive de destino.

root@pupitre-debian:~# dd if=/dev/sdd1 of=/dev/sdc1 bs=1M
dd: error al escribir en �/dev/sdc1�: No queda espacio en el dispositivo
1899+0 registros le�dos
1898+0 registros escritos
1990485504 bytes (2,0 GB) copiados, 356,362 s, 5,6 MB/s

se que se puede hacer, lo que no se es cual es la manera correcta de hacerlo, y necesito hacer el clonado, ya que es el sistema operativo de las cajas de nuestras tiendas y solo nos queda ese pendrive. el mio lo he perdido y mi compañero tambien ha perdido el suyo...xD

un saludo y gracias a todos

Link to comment
Share on other sites

Bueno, gracias pero realmente el que se ha dado el currazo con ese pedazo de tutorial a sido un tal Elias Hidalgo. siempre acabo con diferentes tutoriales, manuales, y este me ha parecido siempre el mas completo y mejor explicado.

vale, ahora que tenemos esto por aqui, voy a exponer una duda que tengo.

tengo un sistema operativo windows en un pendrive de 8gb y lo estoy intentando clonar en un pendrive de 2gb. el windows es un windows xp que cabe perfectamente en el de 2gb.

si copio tal cual de (sda a sdb), no me arranca, el contenido y eso lo copia correctamente pero no hace el autorranque. y si copio solo las particiones, por ejemplo de (sda1 a sdb1), me dice que no hay espacio en el pendrive de destino.

root@pupitre-debian:~# dd if=/dev/sdd1 of=/dev/sdc1 bs=1M
dd: error al escribir en �/dev/sdc1�: No queda espacio en el dispositivo
1899+0 registros le�dos
1898+0 registros escritos
1990485504 bytes (2,0 GB) copiados, 356,362 s, 5,6 MB/s

se que se puede hacer, lo que no se es cual es la manera correcta de hacerlo, y necesito hacer el clonado, ya que es el sistema operativo de las cajas de nuestras tiendas y solo nos queda ese pendrive. el mio lo he perdido y mi compañero tambien ha perdido el suyo...xD

un saludo y gracias a todos

Parece que con losetup puedes crear un dispositivo virtual y modificar la particion con gparted dejas el espacio sin particionar al final y despues se trunca exactamente hasta el ultimo bloque, hay un tutorial en ingles http://softwarebakery.com/shrinking-images-on-linux

Edited by Cristobal
Link to comment
Share on other sites

  • 2 weeks later...

Hola me registre a este foro debido a este post ... hace como 2 años atras por trabajo me toco instalar como 28 servidores Red Hat (idénticos, si mal no recuerdo algunos tenian discos distintos) y con la configuración me tomaba todo el día dejarlos a punto, asi que use este comando para que enseñan aca para configurarlos me ahorro mucho tiempo, pero me fallo como en 2 servidores no me puse a averiguar por que fallo por que no tenia tiempo ... lo que trato de decir que no es 100% fiable, pero la pena ya que te ahorras mucho tiempo y cuando me fallaron simplemente no bootearon asi que se nota enseguida cuando falla

Link to comment
Share on other sites

  • 3 months later...

Genial el post!

 

Un consejo si quereis ver el avance de dd , podeis usar el paquete "pv" que siempre he tenido que instalarlo en debian, fedora y demás... vamos no suele venir con las distros de serie.

 

Básicamente es algo así como "pipe verbose" creo, y muestra un porcentaje y una barra de carga, se usaría de la siguiente manera:

$ dd if=/dev/zero | pv | dd of=/DESTINO

Hay quién dice que esto realentiza algo el dd, también hay quienes dicen que no, el caso es que para copias grandes casi prefiero perder unos segundos xD

 

BUEN APORTE!! te has ganado una caja de cuetaras! :D

 

saludos :reves:

Link to comment
Share on other sites

Genial el post!

 

Un consejo si quereis ver el avance de dd , podeis usar el paquete "pv" que siempre he tenido que instalarlo en debian, fedora y demás... vamos no suele venir con las distros de serie.

 

Básicamente es algo así como "pipe verbose" creo, y muestra un porcentaje y una barra de carga, se usaría de la siguiente manera:

$ dd if=/dev/zero | pv | dd of=/DESTINO
Hay quién dice que esto realentiza algo el dd, también hay quienes dicen que no, el caso es que para copias grandes casi prefiero perder unos segundos xD

 

BUEN APORTE!! te has ganado una caja de cuetaras! :D

 

saludos :reves:

Genial!! No lo conocía, lo voy a probar a partir de ahora en mis copias de isos...xD

Salu2 y gracias!

Link to comment
Share on other sites

Hace unas 2 o 3 semanas me surgió un problemilla.  Hay una distro (una versión ubuntu para el instituto donde estudio) que no había manera de que funcionara.  Es decir, el comando dd sí hacía algo, pero luego el pendrive no arrancaba.  No me ha quedado más narices que usar unetbootin para poder crear el pendrive de esta.  Hace un par de días me pasó algo parecido cuando estaba preparando un pendrive para slacko puppy linux. 

¿Alguien sabe por qué es esto?

Link to comment
Share on other sites

Hace unas 2 o 3 semanas me surgió un problemilla.  Hay una distro (una versión ubuntu para el instituto donde estudio) que no había manera de que funcionara.  Es decir, el comando dd sí hacía algo, pero luego el pendrive no arrancaba.  No me ha quedado más narices que usar unetbootin para poder crear el pendrive de esta.  Hace un par de días me pasó algo parecido cuando estaba preparando un pendrive para slacko puppy linux. 

¿Alguien sabe por qué es esto?

 

jamas he tenido ningun problema con una iso pasada con dd, hasta isos de windows me las copia perfectamente. ni idea? has jugado con diferentes acciones de dd???

Link to comment
Share on other sites

No, no he probado, pero puedo decir que cuando cree el pen de slacko, en ambos casos arrancaba, pero a la hora de pretender instalar, no funcionaba igual (el instalador no reconocía de la misma manera el pendrive).  En cuanto a la otra distro, el comando dd no me daba error alguno, pero luego no arrancaba.  Al hacer el comentario al profesor, de que solía usar dd para crear mis pendrives, me puso cara extrañada y me dijo que eso no era posible ya que el el pendrive no llevaría un arranque ... quizás se refería a que la iso no llevaba incluido ninguna gestión de arranque del SO?

Link to comment
Share on other sites

No, no he probado, pero puedo decir que cuando cree el pen de slacko, en ambos casos arrancaba, pero a la hora de pretender instalar, no funcionaba igual (el instalador no reconocía de la misma manera el pendrive).  En cuanto a la otra distro, el comando dd no me daba error alguno, pero luego no arrancaba.  Al hacer el comentario al profesor, de que solía usar dd para crear mis pendrives, me puso cara extrañada y me dijo que eso no era posible ya que el el pendrive no llevaría un arranque ... quizás se refería a que la iso no llevaba incluido ninguna gestión de arranque del SO?

quiza...obviamente si la iso no tiene autoboot, con dd no vas a hacer un autoarrancable, simplemente copiaras el contenido de la iso, en el pendrive, tla cual...pero eso es de sentido comun, por muy profesor que sea....

pero si la iso ya viene con su "autoarranque" y todo ya preparado, pues al hacer DD, lo copias tal cual, como si fuese un cdrom.

yo siempre uso el basico, pero basico basico... "sudo dd if=patatin.iso of/dev/sdX", sin mas comandos, sin mas opciones/acciones, y nunca tengo problemas con mis pendrives!

salu2

Link to comment
Share on other sites

  • 10 months later...

Buscando mas información sobre dd me he tropezado con una GUI ,o lo que es lo mismo con una interfaz gráfica para dd, la podéis descargas desde este enlace, esta para debian y derivados:

https://launchpad.net/gdiskdump/

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...