“dd”实用程序复制的数量超出预期

“dd”实用程序复制的数量超出预期

我刚买了一个SSD来更换当前的HDD。因此,我决定使用“dd”实用程序复制整个 750 GB 分区(当然使用了其中大约 76 GB 的一部分)。但是,我输入了这个命令:

sudo dd if=/dev/sda5 of=/dev/sdb1

(因为我提到的分区被定义为“sda5”...)我期望它完全复制这 76 GB,但它完成了该部分的复制;而且,它仍然保持复制其他 674 GB 为空。我没想到这个结果。当我输入sudo pkill -USR1 -n -x dd命令时,它说:“505029097+0 条记录在 505029096+0 条记录中复制了 258574897152 字节 (259 GB),39871,3 秒,6,5 MB/秒” 所以,如果有人能向我解释这种情况,我会非常满意。

答案1

dd 实用程序应将指定的输入文件复制到指定的输出文件,并使用特定的输入和输出块大小进行可能的转换。

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/dd.html

文件或驱动器的完整副本也是如此dd,并且无法检测哪些段已使用,哪些未使用。为此我会推荐类似(G)的东西分手了

答案2

如果不指定 bs 和 count 选项,dd 将复制整个分区/dev/sda5。这是因为 dd 是一个非常低级的工具,它无法区分文件和空白空间。因此,要仅复制分区的完整部分,dd 不是您需要的工具,因为即使您指定了大小,实际数据也没有理由应该位于可用空间的开头。

如果只想复制已使用的数据,则应调整分区大小/dev/sda5。首先将 750 分区的大小调整到另一个略高于 76GB 的分区,该分区几乎已满。要调整分区大小,可以使用gpartedfdisk命令。调整大小后,您可以在新分区上以标准方式使用 dd 。

/dev/sda5您还可以通过 gzip 运行来压缩分区。之后,您可以使用 dd 复制压缩图像,如下所示

dd if=/dev/sda5 | gzip > sda5.gz

然后

dd if=sda5.gz | gunzip > /dev/sdb1 

相关内容