En la anterior entrada, Usando ntfsclone y dd para clonado por red con netcat, decía algo que no es cierto:
Sin embargo, mientras que la salida del
ntfsclone
nos dice qué porcentaje de la imagen lleva leído o escrito, eldd
no dice absolutamente nada hasta que finaliza. Como clonar un disco de muchos Gigabytes puede ser una tarea bastante larga, puede ser muy útil introducir entre los comandos de la tubería unpv
para saber por dónde va la copia.
Sor Zitroën (¡gracias!) ha sido tan amable de indicarme que sí que hay una forma de obtener estadísticas del trabajo que lleva hecho dd
, y que está hasta documentado en la página de man
de dd
:
Sending a USR1 signal to a running `dd' process makes it print I/O statistics to standard error and then resume copying. $ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid 18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s
Podría haber añadido esta nota como corrección a la anterior entrada, pero me ha gustado tanto, es una funcionalidad tan interesante y hasta ahora desconocida para mí, que he pensado que tiene entidad propia para comentarlo de forma separada.
Así, si estamos haciendo clonando un disco a través de la red, como veíamos previamente:
sisdest $ sudo nc -lp 2222 | dd of=/dev/hda sisorig $ sudo dd if=/dev/hda | nc -q 0 sisdest 2222
En otro terminal (en cada una de las máquinas) podemos hacer un “ps -ef | grep dd
” para buscar el PID del proceso y luego, al hacer el kill
, en el terminal donde habíamos lanzado el dd
, encontraremos, en la salida de error, las estadísticas del trabajo hecho hasta el momento por dd
:
sisdest # ps -ef | grep dd root 23772 23745 5 19:24 pts/1 00:00:01 dd of /dev/hda sisorig # kill -USR1 23772 sisorig # kill -USR1 23772 sisorig # ps -ef | grep dd root 34675 24619 28 11:23 pts/1 00:00:05 dd if /dev/hda sisdest # kill -USR1 34675 sisdest # kill -USR1 34675 sisdest # nc -lp 2222 | dd of=/dev/hda 340522+0 records in 340522+0 records out 174347264 bytes (174 MB) copied, 21.9449 seconds, 7.9 MB/s 363920+0 records in 363920+0 records out 186327040 bytes (186 MB) copied, 23.4599 seconds, 7.9 MB/s sisorig # dd if=/dev/hda | nc -q 0 sisdest 2222 242172+0 records in 242172+0 records out 123992064 bytes (124 MB) copied, 17.1812 seconds, 7.2 MB/s 270881+0 records in 270881+0 records out 138691072 bytes (139 MB) copied, 19.0057 seconds, 7.3 MB/s
Y una vez más vemos que los sistemas UNIX, día tras día, aún tienen la capacidad de sorprendernos con esas pequeñas funcionalidades medio ocultas que están siempre a la espera de que las descubramos.
:wq