如果只使用300GB硬盘的1/3。是否可以使用 dd 克隆驱动器(但仅限使用的 100GB)?
dd if=/dev/sda of=clone.img
答案1
无法添加文件系统的某些部分
您可以用来dd
复制整个分区,这可能只是硬盘的一部分。
您询问是否可以使用dd
复制分区的一部分。
在一般情况下,这是行不通的:
这意味着您只复制文件系统的一部分。实际数据没有理由应该位于可用空间的开头。即使是这样,其他部分一般也会有相关信息。
类似这样的东西可以工作 - 可能使用与 不同的工具dd
,该工具需要了解数据在分区上的结构 - 也就是说,它需要了解文件系统。
让普通文件系统驱动程序了解数据在磁盘上的排列方式,并使用tar
或类似的方法打包该数据以将其放在其他地方,这听起来更有用。
调整文件系统大小,然后使用 dd
执行与您要求类似的操作的一种方法是调整分区大小。
第一步,将仅填充三分之一的 300GB 分区调整为略高于 100GB 且几乎已满的分区。
gparted
是一个以 GNOME 为中心的库 GUI 前端libparted
,是通常推荐的分区管理器,但parted
CLI 前端也存在(实际上是 libparted 的参考实现)。cfdisk
等fdisk
也是 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