Comando dd-linux
Cuenta la leyenda que en el principio Ken Tompshon y Denis Ritchie (los creadores de UNIX,
antecesor de Linux) desde las entrañas de Bell Labs, necesitaron copiar exactamente byte a byte de
una unidad a otra, como no existía ninguna utilidad para este propósito en su recién concebido
sistema operativo simplemente la crearon… y así nació dd (DatasetDefinition).
Rescrita y portada varias veces desde los ‘70 está aplicación ha demostrado ser de utilidad y
persistió en el tiempo. Lo que pocos saben es que en verdad es un cortaplumas suizo en lo referente
a datos, discos y archivos.
El comando dd (alias: disk destroyer, data destroyer o delete data) es el más claro ejemplo de uno
de los pilares de la filosofia UNIX, en parte heredada porGNU/Linux…
“UNIX was not designed to stop its users from doing stupid things, that would also stop
you from doing clever things.” – Doug Gwyn
Qué podría ser traducido como…
“UNIX no fue diseñado para impedir a los usuario de hacer cosas estúpidas, por que
esta política les hubiese impedido también hacer cosas inteligentes”
Esto es un hecho aún en la vida real, si queremos un cuchillo que sea seguro,compraríamos uno de
plástico. Esté dejaría de ser útil en muchos aspectos, al punto de limitarnos. Bueno.. no sé si fue el
mejor ejemplo pero mas o menos es la idea básica que engloba esta filosofía.
Así dd con la misma facilidad que hace una imagen de cd puede blanquear un disco rígido no
dejando el mínimo rastro de datos.
Antes de empezar, una pequeña intro para los que no conocen estecomando cuya versatilidad es
solo comparable a su simplicidad, (irónico y poco común en el mundo del software actual). Tanto es
así que a pesar de sus mil usos al hacer un $ whatis dd obtendremos un “- convert and
copy a file”
No hay que dejarse llevar con la palabra file aqui (fichero, archivo en inglés) ya que hay que
recordar que en los sistemas tipo UNIX (UNIX-like, como Linux) todo,absolutamente todo es un
archivo (o es lo que se intentó hacer, gracias Denis & Ken) lo que extiende el rango de uso de esta
herramienta.
La sintaxis simplificada es la siguiente:
dd if= of=
dd simplemente toma datos (en crudo) de un origen (if = input file),
y los copia a un destino (of = output file) opcionalmente aplicando el filtro o conversión que se le
indique en el ínterin.
Por mástrivial que parezca a demostrado ser muy útil y lo es! créanme..
¿Qué tan simple? Por ej.
dd if=/dev/cdrom of=imagendeCD.iso
Para cuando los usuarios de Windows se dieron cuenta que se les expiró la versión de prueba del
Nero, Linux ya contaba con una herramienta con más años que el mismo kernel para hacer
imágenes de CD. Luego la montamos en carpeta con:
mount -o loop imagedeCD.iso /mnt/carpeta¿A que me refiero con crudo ?
# dd if=/dev/zero of=/dev/hda bs=512 count=1
Copiara ceros a (limpiará) nuestro MBR (Master Boot Record). Mientras que
# dd if=/dev/zero of=/dev/hda bs=446 count=1
Limpiara el sector de datos del MBR pero dejara la tabla de particiones intacta. Esto es útil para
borrar el GRUB (o Lilo) sin que corran riesgo las particiones.
Algunas opciones frecuentementeusadas son bs y count. BS es el tamaño en bytes de los bloques
de archivos que leerá antes de escribirlos. Es decir si bs=512, hasta que no termine de leer esos 512
bytes (que no es mucho) no los escribirá, esto nos da mucho control sobre la velocidad a la que el
disco lee y escribe, cuando estamos haciendo por ejemplo una imagen del disco. Generalmente el
valor de bs es una potencia de 2. COUNTes la cantidad de bloques de tamaño especificado en BS
que queremos que copie. O sea, si tenemos bs=1024 y count=3, copiará 3 kilobytes en 3 veces (o
cuotas ).
No está de más decir que depende de nuestro disco rígido (o cualquier otro dispositivo de bloques
del que estemos leyendo o escribiendo) que a diferentes valores de bs y count, diferentes
velocidades.
Para hacer una imagen de una...
Regístrate para leer el documento completo.