Rembo Asked: 2019-08-07 12:58:07 +0800 CST2019-08-07 12:58:07 +0800 CST 2019-08-07 12:58:07 +0800 CST 我可以使用任何块大小的 dd 克隆包含操作系统的硬盘驱动器吗? 772 使用 dd 和任意大块大小将硬盘驱动器克隆到更大硬盘驱动器中的图像文件以获得更快的速度是否安全?使用不同的 bs 时生成的图像是否相同?将该图像恢复到原始驱动器时怎么样? backup clone 2 个回答 Voted Kamil Maciorowski 2019-08-07T22:06:40+08:002019-08-07T22:06:40+08:00 将硬盘驱动器克隆到更大硬盘驱动器中的图像文件是否安全,使用dd任意大块大小以获得更好的速度? 这取决于。一般来说:没有。 如果您读取的硬盘驱动器是健康的,dd将生成相同的输出,无论使用的块大小 ( bs) 是多少(除非它大得离谱并且您memory exhausted马上得到并且根本没有输出文件)。并非所有设备都如此(请参阅此问题),您需要iflag=fullblock。 如果你读取的硬盘不健康,dd遇到读取错误后会停止。你需要conv=noerror处理这个。另外你需要conv=sync 和 iflag=fullblock。这是一个神话conv=sync,noerror就足够了(见这个答案和这个评论)。 如果您读取的硬盘驱动器不健康,即使使用 ,您也可能会得到不同的图像conv=sync,noerror iflag=fullblock,具体取决于bs(严格:)ibs。想象一下硬盘上有一个错误的物理扇区。该扇区可能会影响一个或多个读取操作,结果将取决于块大小以及块如何与物理扇区对齐。您的图像中可能会出现比错误扇区更大的“零洞”。如果块大小与物理扇区大小相匹配,您将得到一个恰好这个大小的“零洞”,这是您可以获得的最佳(最小“洞”)。 另一方面较大的bs可以提高吞吐量。 还有一方面。如果您读取的硬盘驱动器是健康的(或者至少您假设它是健康的),您可能需要对其进行准备,以便图像作为稀疏文件占用更少的空间(这个答案,稀疏文件方法)。dd将尝试使用conv=sparse. 这种方法的有效性取决于bs;strictly: on obs,所以在这种情况下分开使用 largeibs和 small是合理的。obs 所有这些原因使得dd它不是一般创建磁盘映像的最佳工具,尤其是当您不太了解它的怪癖时。(注意:“不是最好的”仍然可以是“好”的)。ddrescue使用扇区大小 ( -b) 与源设备的物理扇区大小相匹配的GNU和相对较大的簇大小 ( -c) 以提高性能。-S它将利用稀疏性。 dd当我更喜欢over时,有两种情况ddrescue: (琐碎的)什么时候dd可用,什么时候ddrescue不可用。 当我需要流式传输(管道)输出时。ddrescue需要一个可搜索的输出文件;我可以将输出通过dd管道传输到nc, pv, gzip(再次回答此问题,压缩文件方法)或其他任何方式。 将该图像恢复到原始驱动器时怎么样? 前提是可以无误读取镜像,原盘是健康的。如果是这样,dd就可以了,大块大小就可以了。 如果在读取图像时出现读取错误(这表明保存图像的设备或/和文件系统已损坏),您应该像处理不健康的源设备(如上所述)一样继续并确认原始驱动器上的结果数据可能是(部分)损坏。 如果在写入原始驱动器时出现写入错误,则恢复映像毫无意义;你根本不应该使用这个驱动器。 Best Answer ivanivan 2019-08-07T13:26:17+08:002019-08-07T13:26:17+08:00 是的,无论块大小如何,都没有问题。 也就是说,使用dd你也会复制空白/未使用的空间,从而浪费目标文件中的空间。如果您喜欢通过网络直接连接到目标磁盘,这是可以netcat的dd,但如果您正在制作“主映像”以克隆一堆机器或用于备份目的,那就不太好了。如果那是你打算做的,我会看看像这样的成像程序clonezilla。
这取决于。一般来说:没有。
如果您读取的硬盘驱动器是健康的,
dd
将生成相同的输出,无论使用的块大小 (bs
) 是多少(除非它大得离谱并且您memory exhausted
马上得到并且根本没有输出文件)。并非所有设备都如此(请参阅此问题),您需要iflag=fullblock
。如果你读取的硬盘不健康,
dd
遇到读取错误后会停止。你需要conv=noerror
处理这个。另外你需要conv=sync
和iflag=fullblock
。这是一个神话conv=sync,noerror
就足够了(见这个答案和这个评论)。如果您读取的硬盘驱动器不健康,即使使用 ,您也可能会得到不同的图像
conv=sync,noerror iflag=fullblock
,具体取决于bs
(严格:)ibs
。想象一下硬盘上有一个错误的物理扇区。该扇区可能会影响一个或多个读取操作,结果将取决于块大小以及块如何与物理扇区对齐。您的图像中可能会出现比错误扇区更大的“零洞”。如果块大小与物理扇区大小相匹配,您将得到一个恰好这个大小的“零洞”,这是您可以获得的最佳(最小“洞”)。另一方面较大的
bs
可以提高吞吐量。还有一方面。如果您读取的硬盘驱动器是健康的(或者至少您假设它是健康的),您可能需要对其进行准备,以便图像作为稀疏文件占用更少的空间(这个答案,稀疏文件方法)。
dd
将尝试使用conv=sparse
. 这种方法的有效性取决于bs
;strictly: onobs
,所以在这种情况下分开使用 largeibs
和 small是合理的。obs
所有这些原因使得
dd
它不是一般创建磁盘映像的最佳工具,尤其是当您不太了解它的怪癖时。(注意:“不是最好的”仍然可以是“好”的)。ddrescue
使用扇区大小 (-b
) 与源设备的物理扇区大小相匹配的GNU和相对较大的簇大小 (-c
) 以提高性能。-S
它将利用稀疏性。dd
当我更喜欢over时,有两种情况ddrescue
:dd
可用,什么时候ddrescue
不可用。ddrescue
需要一个可搜索的输出文件;我可以将输出通过dd
管道传输到nc
,pv
,gzip
(再次回答此问题,压缩文件方法)或其他任何方式。前提是可以无误读取镜像,原盘是健康的。如果是这样,
dd
就可以了,大块大小就可以了。如果在读取图像时出现读取错误(这表明保存图像的设备或/和文件系统已损坏),您应该像处理不健康的源设备(如上所述)一样继续并确认原始驱动器上的结果数据可能是(部分)损坏。
如果在写入原始驱动器时出现写入错误,则恢复映像毫无意义;你根本不应该使用这个驱动器。
是的,无论块大小如何,都没有问题。
也就是说,使用
dd
你也会复制空白/未使用的空间,从而浪费目标文件中的空间。如果您喜欢通过网络直接连接到目标磁盘,这是可以netcat
的dd
,但如果您正在制作“主映像”以克隆一堆机器或用于备份目的,那就不太好了。如果那是你打算做的,我会看看像这样的成像程序clonezilla
。