dd 是否复制所有内容,包括所有元数据和所有“空”块

Mad*_*ern 7 dd block-device

突然,我的分区出现了问题,或者只是一个分区。我有一个默认的 Ubuntu 安装,在金士顿 SSD 上,根文件系统用 LUKS 加密,(我认为使用 AES)。现在我正在尝试从 live cd 挂载分区,但没有运气。

我很害怕造成一些无法挽回的额外伤害。所以我想制作驱动器的精确副本。这意味着所有分区表,LUKS 分区的任何类型的元数据,以及我不知道的任何其他类型的元数据。我想我也希望所有的空块都绝对安全。

我知道dd if=/dev/sda of=/dev/sdb,但我不知道它是否会包含所描述的所有数据。

也许我需要用 指定块大小-b,但我不明白它是如何工作的以及为什么它是必要的(如果是的话)。而且我也不知道如何找到分区的块大小。

请告诉我它是否确实复制了所有数据,如果没有,是否还有其他方法。

Fel*_*xJN 11

是的,即使是那些不会(正式)包含数据以及有关分区、UUID 等的所有信息的块。

例如,可以从 dd 复制的驱动器恢复数据(即删除文件后)。

您可能需要阅读关于noerrorsync选项。

bs=除非有读取错误,否则块大小 ( ) 不会影响结果,但您应该将其设置为“1M”(或至少为“4k”),否则会无缘无故地花费更长的时间。


mik*_*erv 7

做就是了:

cp /dev/block_device imgfile
Run Code Online (Sandbox Code Playgroud)

如果imgfile将位于理解这些事情的文件系统上,GNUcp 应该默认稀疏地写入图像。不过,您可以指定您的偏好,例如...

cp --sparse=always /dev/sda imgfile
Run Code Online (Sandbox Code Playgroud)

dd的主要用途在于它能够可靠地仅获取流的指定部分,或者它可以非常有效地将某些转换应用于相同的部分。如果您想要所有文件的 1:1 副本,那么就cp可以了。