Progress of dd

Bash

dd 是一个 Bash 命令,可以用于文件/硬盘的整体拷贝。比如,希望将 Raspberry Pi 的 SD 卡复制一份,就可以使用 dd 这个命令来进行。

但是默认的 dd 命令并没有进度提示,在完整执行完之前,默认在 stdout 中不会看到任何输出。

如果想要获得当前 dd 的执行进度,可以尝试如下的一些方法:

  1. 通过 Control + TSIGINFO 发送给 dd 命令,dd 收到后会输出当前的进度信息;
  2. 类似的,也可以通过 pkill 命令将 SIGINFO 发送给 ddpkill -INFO -x dd

其中,针对第二点的命令,可以写一个简单的脚本来定时输出当前的进度:

while pgrep ^dd; do pkill -INFO dd; sleep 10; done

dd 的输出结果示例如下:

1000+0 records in
1000+0 records out
67108864000 bytes transferred in 3.720346 secs (18038339571 bytes/sec)

更多方法(原理都是发送 SIGINFOdd),可以参考这里