¿el comando 'dd' tarda demasiado? [duplicar]

24

Configuré dd para clonar un disco duro de 40.00GB más pequeño (/ dev / sda) en un nuevo 111.00GB más grande conectado a través de un lector USB (dev / sdb) y ha estado funcionando durante dos horas. El medidor de actividad en el nuevo disco duro muestra que está haciendo algo. Pero la CPU solo tiene un 20%. ¿Cuándo se completará esto? ¿Debo reiniciar el proceso?

    
pregunta seanthewebber 22.11.2012 - 19:03

5 respuestas

54

En el futuro, debe usar pv para obtener una barra de progreso en ejecución.

sudo apt-get install pv

Con pv instalado, supongamos que desea clonar un disco de 20GB, /dev/foo , en otro disco (20GB o más grande), /dev/baz :

sudo dd if=/dev/foo bs=4M | pv -s 20G | sudo dd of=/dev/baz bs=4M

Puntos importantes a tener en cuenta: el argumento bs=4M establece el tamaño de bloques para las operaciones de dd en 4 MB, lo que drásticamente mejora la velocidad de todo. Y el argumento -s 20G le dice a pv qué tan grande se espera que sea esta operación, por lo que puede darle una ETA así como también una velocidad actual.

Me encanta pv tan difícil que probablemente sea ilegal.

    
respondido por el Jim Salter 22.11.2012 - 19:40
23

Puede ver cuánto ha avanzado enviándole una señal SIGUSR1 para ver la cantidad de datos que ha copiado y la velocidad de transferencia:

kill -SIGUSR1 $(pidof dd)

Para la actividad de copia, está limitado por la velocidad de E / S del dispositivo, por lo que la CPU no debe estar completamente cargada, así que no se preocupe por eso.

    
respondido por el Colin Ian King 22.11.2012 - 19:09
6

He utilizado pv tan bien como (ps y kill) en el pasado como se sugiere en las otras respuestas, pero más recientemente acabo de usar dc3dd , que produce los mismos resultados y proporciona un informe de progreso a lo largo de el proceso.

Puede verificar si ya está instalado con: which dc3dd

Si no, puede instalarlo con sudo apt-get install dc3dd

Los conmutadores de comando son similares a dd (para la clonación, aunque borrarlos es un poco más directo).

En tu caso usaría el comando dc3dd if=/dev/sda of=/dev/sdb

Editar:

Versiones recientes de dd del paquete coreutils la versión 8.24+ incluida en Ubuntu 16.04 y posterior incluye un parámetro de estado. Puede lograr el mismo resultado con dd agregando el modificador status=progress a su línea de comando dd .

Ejemplo: dd if=/dev/zero of=/dev/null count=1000 status=progress

    
respondido por el Elder Geek 26.03.2015 - 16:11
0

Tuve un problema similar. La causa fue diferente en mi caso.

La unidad de destino es un disco duro externo.

Si el disco se montó automáticamente a través de udisks y udisks-glue , la velocidad de transferencia de cdrom a hd fue de aproximadamente 40kB / s.

Cuando desmonto el HD y lo monté directamente a través de mount obtuve una velocidad de transferencia de aproximadamente 2.4MB / s.

    
respondido por el Tobias 23.08.2014 - 09:07
0

En su lugar, podrías usar ddrescue:

sudo ddrescue -v /dev/sda /dev/sdb

v significa verboso.

    
respondido por el atmelino 26.05.2015 - 05:49

Lea otras preguntas en las etiquetas