使用`dd`克隆磁盘时如何检查进度?

Mas*_*imo 7 dd

可能重复:
dd:我怎么知道它是否仍在工作?

我正在使用dd将磁盘克隆到图像文件,并动态压缩它:

dd if=/dev/sda | gzip > /mnt/image_file
Run Code Online (Sandbox Code Playgroud)

如何查看dd已经处理了多少数据?
查看输出文件大小当然没用,因为它被压缩了。

Chr*_*own 10

大多数dd实现在收到SIGUSR1. pkill -USR1 -x dd可能是你想要的。

  • @Fidel 如果你真的想要美丽,你应该让它在 `dd` 不再存在时结束:`while pkill -USR1 -x dd; 做睡眠1; 完成`;-) (3认同)

Kev*_*vin 5

尝试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
Run Code Online (Sandbox Code Playgroud)

我又跑了,pv并且dd甚至接近和低于<。我的结论是性能pvdd是相同的错误影响很小的幅度内。