En ocasiones
se presentan situaciones en las cuales se necesita clonar el disco duro del
computador bien sea para tener un respaldo idéntico o para colocarlo en otro
computador de características semejantes. Para ello se cuenta con muchas
herramientas todas pagas, pero hay unas que no lo son, si se utiliza el sistema
operativo Linux, lo tenemos resuelto, en Linux cuenta con un el comando dd
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.
Además
de toda la información de dd se puede
consultar con el comando man dd e info dd, también dos grandes olvidados…
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 Razz :
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’.
Fuentes:
http://doc.ubuntu-es.org, y los consabidos man dd e info dd.
No hay comentarios:
Publicar un comentario