我如何知道“dd”克隆需要多长时间?

我如何知道“dd”克隆需要多长时间?

我有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/

  1. sudo apt-get install dcfldd
  2. 而不是dd你写dcfldd

相关内容