Как проверить прогресс при клонировании диска с помощью `dd`?

Возможный дубликат:
dd: Как узнать, работает ли он еще?

Я использую dd для клонирования диска в файл изображения и сжимаю его на лету:

 dd if=/dev/sda | gzip > /mnt/image_file 

Как проверить, сколько данных dd уже обработано?
Глядя на размер выходного файла, конечно, бесполезно, из-за его сжатия.

Большинство dd реализаций отображают информацию о состоянии после получения SIGUSR1 . pkill -USR1 -x dd – это, вероятно, то, что вы хотите.

Попробуйте pv , просмотрщик каналов. Я просто тестировал и работает непосредственно на /dev/sda , что означает, что вы даже получаете детерминированный индикатор прогресса.


Что касается времени:

Я создал случайный файл с dd if=/dev/urandom of=random bs=4k count=10000 . Затем я попробовал несколько способов его чтения:

 $ time dd if=random | gzip >rand.gz 800000+0 records in 800000+0 records out 409600000 bytes (410 MB) copied, 17.9261 s, 22.8 MB/s real 0m17.940s user 0m16.545s sys 0m1.248s $ time pv random | gzip >rand.gz 391MB 0:00:17 [22.1MB/s] [==================================>] 100% real 0m18.048s user 0m16.477s sys 0m1.048s $ time <random gzip >rand.gz real 0m18.410s user 0m16.401s sys 0m0.596s 

Я снова побежал, pv и dd были еще ближе и ниже, чем < . Я заключаю, что производительность pv и dd одинакова с очень небольшим погрешностью.