‘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
我有类似的问题。 在我的案例中,原因是不同的。
目标驱动器是外部硬盘。
如果磁盘是通过udisks
和udisks-glue
自动安装的,那么从cdrom到hd的传输速率约为40kB / s。
当我卸下高清并通过mount
直接安装它时,我的传输速率约为2.4MB / s。
你可以改为使用ddrescue:
sudo ddrescue -v /dev/sda /dev/sdb
v代表详细。