‘dd’命令花了太长时间?

我设置dd克隆一个较小的系统40.00GB硬盘(/ dev / sda)到一个新的更大的111.00GB,通过USB读卡器(dev / sdb)连接,现在已经持续了两个小时。 新硬盘上的活动计显示它正在做某事。 但CPU只有20%左右。 这个东西什么时候完成? 我应该重新开始这个过程吗?

将来,您应该使用pv来获取正在运行的进度条。

sudo apt-get install pv

安装了pv ,我们假设您要将20GB驱动器/dev/foo克隆到另一个驱动器(20GB或更大!), /dev/baz

sudo dd if=/dev/foo bs=4M | pv -s 20G | sudo dd of=/dev/baz bs=4M

需要注意的重要事项: bs=4M参数将dd操作的blocksize设置为4MB,这大大提高了整个事物的速度。 并且-s 20G参数告诉pv预期这个操作有多大,所以它可以给你一个ETA以及当前的速度。

我非常喜欢pv ,它应该是非法的。

您可以通过发送SIGUSR1信号来查看它已经获得了多远,以便查看它复制的数据量和传输速率:

 kill -SIGUSR1 $(pidof dd) 

对于复制活动,您受到设备I / O速度的限制,因此CPU不应该满载,因此不必担心。

我在过去使用了pv以及(ps和kill),如其他答案中所建议的那样,但是最近我刚刚使用dc3dd ,它产生相同的结果,同时在整个过程中提供进度报告。

您可以检查它是否已安装: which dc3dd

如果没有,你可以用sudo apt-get install dc3dd

命令开关类似于dd(用于克隆,尽管擦除更简单一些)。

在你的情况下,我将使用命令dc3dd if=/dev/sda of=/dev/sdb

编辑:

Ubuntu 16.04及更高版本中包含的coreutils软件包版本8.24+的最新版本的dd包含一个status参数。 通过将status=progress开关添加到dd命令行,可以使用dd完成相同的结果。

示例: dd if=/dev/zero of=/dev/null count=1000 status=progress

我有类似的问题。 在我的案例中,原因是不同的。

目标驱动器是外部硬盘。

如果磁盘是通过udisksudisks-glue自动安装的,那么从cdrom到hd的传输速率约为40kB / s。

当我卸下高清并通过mount直接安装它时,我的传输速率约为2.4MB / s。

你可以改为使用ddrescue:

 sudo ddrescue -v /dev/sda /dev/sdb 

v代表详细。