Mostrar barra de progreso cuando se usa dd

dd es una herramienta muy útil para la copia de disco a disco o incluso para crear imágenes de cds, dvds, pendrives e incluso discos duros. Su uso es sencillo, os lo muestro con un ejemplo:

dd if=/dev/dvd of=/mnt/images/kubuntu_13.10.iso

El parámetro if especifica el dispositivo de entrada y of el dispositivo de salida. Así pues, lo que hacemos con esto es crear una imagen del DVD (suponemos que el dispositivo es /dev/dvd (*)) en el archivo kubuntu_13.10.iso que se guardará en /mnt/images. Obviamente, podéis poner cualquier dispositivo y cualquier fichero de salida, amén de otros muchos usos que se puede dar a esta utilidad.

Cuando se ejecuta este comando no aparece nada en la línea de comandos, sino que se queda en espera hasta que finaliza y muestra entonces los bytes copiados y la velocidad. Por tanto, mientras dura el proceso no tenemos ningún feedback que nos indique cómo va la cosa, cuánto queda, qué velocidad lleva…

Para esto podemos usar una utilidad llamada pv (**). Este comando copia la entrada estándar a la salida estándar mostrando un indicador de progreso cuando se ejecutan procesos en la línea de comandos. Así, usando pipelines, podemos combinar muchas utilidades con ésta para que durante el proceso de las mismas podamos ver el avance.

En nuestro caso, siguiendo el ejemplo de arriba, para ver el progreso de ejecución del mismo, pondríamos lo siguiente:

dd if=/dev/dvd | pv | dd of=/mnt/images/kubuntu_13.10.iso

Aquí tenéis más ejemplos de uso de esta utilidad.

Con esta sencilla sintaxis podéis tener un feedback cuando usáis dd para realizar procesos largos (normalmente de backup, que es el uso mayoritario de dd) y así saber que todo va bien.

 

(*) /dev/dvd suele ser un enlace simbólico al dispositivo real, que normalmente suele ser /dev/sr0 (si tenemos una segunda unidad de cd sería /dev/sr1 y así sucesivamente…).

(**) Si bien dd viene instalado por defecto en todos los Unix/Linux, la utilidad pv tendréis que instalarla manualmente. Está en los repositorios, así que no tendréis problema:

aptitude install pv