![我如何知道“dd”克隆需要多长时间?](https://linux22.com/image/1095087/%E6%88%91%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E2%80%9Cdd%E2%80%9D%E5%85%8B%E9%9A%86%E9%9C%80%E8%A6%81%E5%A4%9A%E9%95%BF%E6%97%B6%E9%97%B4%EF%BC%9F.png)
我有dd
几个 1TB 硬盘。克隆它们要花几个小时,我想知道是否有办法知道它们的运行速度有多快、已经完成了多少以及复制剩余部分需要多长时间。
我所能看到的只是正在运行命令的终端。当我运行时,ps -e
至少我dd
能从显示的 CPU 使用率知道它在工作,但我无法知道它完成了多少工作或需要多长时间才能完成。
有点让我抓狂。
答案1
典型。当我问问题时,我会以某种方式找到答案(即使我花了几个小时……但神奇的是,我在提出问题后找到了答案 -.- )。无论如何,我检查了dd --help
帮助末尾提到的内容(我真的不敢相信我没有看到这一点),以下内容:
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
这意味着您将在另一个终端中使用要检查的 DD 的进程 ID 运行以下行。例如,在我的情况下是进程 ID 4112。您可以通过键入ps -e
并查找 dd 或仅ps -e|grep dd
查看前面的数字来查看进程 ID。记下该数字,然后在另一个终端窗口中输入kill -USR1 4112; sleep 1;
这将为我提供时间、自开始以来经过的秒数以及已复制的数量。至少现在我知道以大约 40MB/s 的速度复制 1TB 的信息大约需要 8 小时。
答案2
使用该程序pv
查看任何管道流的实时数据传输报告。它可用于任何使用管道的应用程序。它也是查看 USB、外部磁盘、联网计算机等传输速率的绝佳工具。
dd if=infile | pv > outfile
或者直接复制,只需使用以下命令:
pv infile > outfile
例子:
sudo pv /dev/sda1 > /home/user/sda1.ext4.img
答案3
关于使用 kill 在 Mac 上显示信息,您必须向其传递 flag-INFO
而不是 flag -USR1
。请记住,它会在运行 dd 进程的终端中显示信息,因此如果您打开新选项卡进行输入kill -INFO $PID
($PID
使用 找到的数字在哪里ps -e | grep dd
),则必须切换回正在dd
运行的选项卡才能查看输出。
现在,如果我能弄清楚如何将输出显示为 GB 或 MB 而不是纯字节......
答案4
已经有另一个扩展的 dddcfldd
可以做很多有趣的事情,就像你要求的那样http://dcfldd.sourceforge.net/
sudo apt-get install dcfldd
- 而不是
dd
你写dcfldd