Lui*_*ado 30 command-line clone dd
我必须dd有几个 1TB 硬盘。他们花了几个小时来克隆,我想知道是否有任何方法可以知道他们的进展速度,他们做了多少以及他们复制其余部分需要多长时间。
我只能看到运行命令的终端。ps -e至少当我运行时,我知道dd从显示的 CPU 使用情况来看它正在工作,但我无法知道它已经完成了多少或需要多长时间才能完成。
有点让我发疯。
Lui*_*ado 31
典型的。当我问一些问题时,我会以某种方式找到答案(即使我找了几个小时......但神奇的是我在创建问题后找到了 -.- )。无论如何,对于我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
Run Code Online (Sandbox Code Playgroud)
这意味着在另一个终端中,您将使用要检查的 DD 的进程 ID 运行以下行。例如,在我的情况下是进程 ID 4112。您可以通过键入ps -e并查找 dd 或仅ps -e|grep dd查看前面的数字来查看进程 ID 。记下那个数字,然后在另一个终端窗口中输入kill -USR1 4112; sleep 1;这将给我时间,自它开始以来经过的秒数以及复制了多少。至少现在我知道以大约 40MB/s 的速度复制 1TB 的信息需要大约 8 个小时。
Sep*_*ero 23
将该程序pv用于任何管道流以查看传输的数据的实时报告。它可以用于任何使用管道的应用程序。它也是查看 USB、外部磁盘、联网计算机等设备的传输速率的绝佳工具。
dd if=infile | pv > outfile
Run Code Online (Sandbox Code Playgroud)
或者直接复制,只需使用这个:
pv infile > outfile
Run Code Online (Sandbox Code Playgroud)
例子:
sudo pv /dev/sda1 > /home/user/sda1.ext4.img
Run Code Online (Sandbox Code Playgroud)
小智 15
关于使用 kill 在 Mac 上显示信息,您必须将-INFO标志而不是-USR1标志传递给它。请记住,它会在您的 dd 进程正在运行的终端中显示信息,因此如果您打开一个新选项卡进行输入kill -INFO $PID($PID您使用的数字在哪里ps -e | grep dd),您将必须切换回dd正在运行的选项卡看到输出。
现在,如果我能弄清楚如何将该输出显示为 GB 或 MB 而不是纯字节...