原题:
如果我有具有以下特征的2个个相同的硬盘驱动器:
一份完整的dd副本需要多长时间才能完成?
到目前为止,它已经运行了5个小时,还在继续.
我使用的是Linux Ubuntu 12.04 64位,我使用的命令是:
dd if=/dev/sdb of=/dev/sdc现在我可以看到进展了,拷贝430‘s已经是6+小时了。硬盘是3TB..。
有没有更快的方法来做到这一点?
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K对于3TB,ETA大约是9个小时,而在6小时后达到430 it之前,我猜使用前面的命令大约需要36个小时。
发布于 2014-07-12 21:17:49
在过去,当人们使用磁带(当块大小很重要时),以及像dd这样简单的工具可能并不是二进制安全的时候,cat是很有用的。
现在,dd if=/dev/sdb of=/dev/sdc是一种非常复杂、容易出错的慢的编写cat /dev/sdb >/dev/sdc的方法.虽然dd对于一些相对罕见的任务仍然有用,但它的用处远不如提到它的教程数量让您相信。在dd中没有魔力,魔术全部在/dev/sdb中。
您的新命令sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K再次不必要地缓慢和复杂。数据一次读取128 as (这比dd默认值512 B好,但不如更大的值)。然后,它经过两个管道,然后被写入。
使用更简单和更快的cat命令。(在几年前我在Linux下制作的一些基准中,对于不同磁盘之间的副本,cat比cp更快,而对于任何块大小,cp比dd更快;在复制到同一个磁盘上时,具有较大块大小的dd略快一些。)
cat /dev/sdb >/dev/sdc如果要在sudo中运行此命令,则需要使重定向以root形式进行:
sudo sh -c 'cat /dev/sdb >/dev/sdc'如果您想要一份进度报告,因为您使用的是Linux,您可以很容易地通过记录cat进程(比如1234)的PID并查看其输入(或输出)文件描述符的位置来获得进度报告。
# cat /proc/1234/fdinfo/0
pos: 64155648
flags: 0100000如果您想要进度报告,而unix变体并不提供获取文件描述符位置的简单方法,则可以安装和使用pv而不是cat。
发布于 2014-07-12 14:11:31
默认情况下,dd使用非常小的块大小(512字节)。这会导致大量开销(每512个字节就有一个read()和write()系统调用)。
当你使用更大的块时,它的速度要快得多。最佳速度从bs=64k左右开始。大多数人使用更大的bs=1M,这样它就变得可读的了(当dd说它复制1234 blocks时,您知道它是1234 MiB而不做任何数学运算)。使用更大的块不太可能导致速度的提高,只是内存消耗更高。
因此,命令应该是:
dd bs=1M if=/dev/sdb of=/dev/sdc如果您已经有一个运行缓慢的dd,您可以中断它并使用一个更快的dd实例继续运行。对此,重要的是要知道复制已经取得了多大的进展。dd通常在取消进度时打印进度,或者在它运行时向它发送USR1信号以使其打印进度。
kill -USR1 $(pidof dd)例如,如果它复制的比1234MiB多,您可以在1234MiB位置继续使用:
dd bs=1M seek=1234 skip=1234 if=/dev/sdb of=/dev/sdc如果它复制的数量少于1234MiB,您的副本将是不完整的。如果它复制的比1234MiB多,它将重新复制一些已经复制的部件,这通常不会造成任何伤害。因此,如果有疑问,您应该选择一个比您认为已经复制的值稍小的值。
发布于 2017-10-09 20:50:28
有一种叫做HDClone的商业软件。它既是免费软件,也是商业软件。这两种版本都可以创建可引导的摆盘或DVD,以及复制磁盘。连接源和目标HDs,并遵循基于GUI的说明。
免费版本的传输速度约为80 go /秒,而付费版本的传输速度要快得多。对于NTFS和FAT文件系统,付费版本可以配置为只克隆被占用的HD部分,这极大地提高了每个克隆的速度。
https://unix.stackexchange.com/questions/144172
复制相似问题