DD con barra de progreso y estadísticas

Dejo esta autonota para que cuando ejecutemos el comando DD podamos ver la barra de progreso de lo que va ocurriendo.

El que haya utilizado este comando sabe que a veces puede durar días y el no saber ni por donde anda desespera.

Para ello necesitaremos instalar el pequeño comando pv, con un simpre apt-get install pv le tendremos.

El comando es el siguiente:

sudo dd if=/dev/cdrom bs=4096 | pv -s `sudo mount /dev/cdrom /media/cdrom && du -sb /media/cdrom/ |awk '{print $1}' && sudo umount /media/cdrom`| sudo dd bs=4096 of=imagen_cdrom.iso

Nos mostrará por pantalla lo siguiente:

38MB 0:00:44 [3,61MB/s] [=======>                  ] 33% ETA 0:01:28

Saludos y espero que os valga.

Print Friendly, PDF & Email
Comentarios
  • Raul dice:

    y no podrias ser mas espesifico por favor

    • juanmi dice:

      Haré el esfuerzo Raúl

      El comando es este:

      “sudo dd if=/dev/cdrom bs=4096 | pv -s `sudo mount /dev/cdrom /media/cdrom && du -sb /media/cdrom/ |awk ‘{print $1}’ && sudo umount /media/cdrom`| sudo dd bs=4096 of=imagen_cdrom.iso”

      Con esta parte “sudo dd if=/dev/cdrom bs=4096″ le decimos al programa dd de donde tiene que recoger los datos para realizar al iso.

      Este comando “pv -s `sudo mount /dev/cdrom /media/cdrom && du -sb /media/cdrom/ |awk ‘{print $1}’ && sudo umount /media/cdrom`” es el más lioso ya que debe montar primero el cd para saber cuanto tamaño ocupa y lugo desmontarlo, todo para pasarle al comando pv cual es el size y así cuando llegue al 100% sea real. Pdriamos ponerle un -s 200000 y no scogería 2 gb pero si el cd ocupa 400mb la barra de progreso no sería cierta.

      Con este último comando “sudo dd bs=4096 of=imagen_cdrom.iso” le decimos a dd donde tiene que dejar la imagen iso que está creando.

      LA intención del comando completo es pasarle a pv el size correcto, si no estás haciendo una iso de un cd y por ejemplo estás haciendo una copia completa de un disco duro, tendrás que saber el tamaño del disco que estás copiando y pasarsela al comando pv en su opción -s.

      Te pongo un ejemplo:

      Quiero hacer un dd de mi disco duro a una imagen, mi disco duro ocupa 110664528, este dato lo he sacado con un simple df, el comando sería así:

      “sudo dd if=/dev/sda bs=4096| pv -s 110664528| sudo dd bs=4096 of=/otro_disco/imagen_disco_duro.iso”

      Espero haber sido más específico

      Si tienes dudas con algún otro comando por ejemplo awk, du, sudo, o algún otro no dudes en preguntar

      Saludos.

  • Bwadsi dice:

    Gracias

    Si p.e. queremos asegurarnos de que se hayan copiado bien unos ficheros contenidos en varios niveles de subdirectorios nos puede servir saber el total de bytes de todos ellos. ¿Cómo podemos saberlo en un terminal o consola?

    du es, como indica la primera línea de su man, una estimación del uso de espacio. Se suele usar:
    [code]du -hs[/code]
    Pero si aplicamos el comando en el nivel superior del original y lo copiado podemos notar alguna diferencia. Entonces, si ejecutamos …
    [code]du -hbs[/code]
    … seguramente la diferencia sea menor pero todavía existente.

    Aquí está la reválida, también rapidísima en devolver el resultado pese a la longitud del comando:
    [code]ls -lR | grep -v ‘^d’ | awk ‘{total += $5} END {print «Total:», total}'[/code]
    Si se han copiado bien los ficheros debería salir exactamente lo mismo en los 2 lados.

Deja un comentario