是否可以使用 dd 仅克隆使用的硬盘部分?

是否可以使用 dd 仅克隆使用的硬盘部分?

如果只使用300GB硬盘的1/3。是否可以使用 dd 克隆驱动器(但仅限使用的 100GB)?

dd if=/dev/sda of=clone.img

答案1

无法添加文件系统的某些部分

您可以用来dd复制整个分区,这可能只是硬盘的一部分。

您询问是否可以使用dd复制分区的一部分。

在一般情况下,这是行不通的:
这意味着您只复制文件系统的一部分。实际数据没有理由应该位于可用空间的开头。即使是这样,其他部分一般也会有相关信息。

类似这样的东西可以工作 - 可能使用与 不同的工具dd,该工具需要了解数据在分区上的结构 - 也就是说,它需要了解文件系统。

让普通文件系统驱动程序了解数据在磁盘上的排列方式,并使用tar或类似的方法打包该数据以将其放在其他地方,这听起来更有用。

调整文件系统大小,然后使用 dd

执行与您要求类似的操作的一种方法是调整分区大小。

第一步,将仅填充三分之一的 300GB 分区调整为略高于 100GB 且几乎已满的分区。

gparted是一个以 GNOME 为中心的库 GUI 前端libparted,是通常推荐的分区管理器,但partedCLI 前端也存在(实际上是 libparted 的参考实现)。cfdiskfdisk也是 CLI 选项,虽然我想说它们不如gparted大多数 Linux 发行版那么友好,但应该将它们作为核心实用程序包的一部分。

调整大小后,您可以dd在包含完整文件系统的完整分区上以标准方式使用。

文件系统归档工具

根据您想要执行的操作,这也可能会有所帮助:

fsarchiver是一种从压缩格式的文件系统创建自定义映像的工具,需要使用相同的工具解压缩。

由于自定义格式,我一般不推荐使用该工具来创建图像,但作为中间状态,它可能是有意义的。您将创建现有分区的映像,该映像不需要文件系统的空白部分的空间。然后,您可以使用它将其解压到不同的分区和不同的文件系统。文件系统是fsarchiver作为解包的一部分生成的。

答案2

partclone(来自与 CloneZilla 相同的作者)可以做到这一点。但它似乎没有使用 DD 兼容的图像格式。

partimage也可以使用较少支持的文件系统来做到这一点。

您应该能够通过将图像恢复到文件来将图像转换为 DD 兼容格式。(你可能想要也将其转换为稀疏文件

您将无法将映像恢复到较小的磁盘,因为它仍然是块映像,但它使用文件系统的知识来跳过未使用的部分。

确切的命令需要更多信息,例如源文件系统,因为partimage存在特定于文件系统的版本。

答案3

如果您不想浪费额外的 200GB 空间进行备份,您可以使用 GNU 实用程序zerofree将文件系统上所有未使用的空间设置为指定值。用作0xFF该值可以减少固态硬盘的磨损并提高性能。 (因为闪存中已擦除的页面默认全部为 0xFF。这也大大提高了在驱动器上执行操作的速度)一旦完成,分区上所有未使用的字节都将是字节 0xFF。现在,您可以简单地使用支持运行长度压缩的压缩算法,所有这些 0xFF 字节的大块将减少到几兆字节。所以你的命令会是这样的:(作为root)

zerofree -v -f 0xFF /dev/nvme1n1p4
dd if=/dev/nvme1n1p4 | lzma > ./backup-image.img.lzma

生成的图像不应比驱动器上的已用空间大得多(如果不是小的话)。

要稍后将此备份恢复到磁盘,您只需执行以下操作:

dd if=./backup-image.img.lzma | unlzma | dd of=/dev/sda1

相关内容