DD 映像小于复制的驱动器

DD 映像小于复制的驱动器

我通过实时 USB 备份了服务器的操作系统磁盘。使用以下命令:

dd if=/dev/sda bs=512 count=(30 gb worth of sectors) conv=noerror,sync status=progress | gzip -c > /path/to/removable/media

命令完成且没有错误,图像已创建。img.gz 大小为 16 GB

(服务器的操作系统占用了约 15GB 的存储空间)但是当我在 winrar 中打开 .gz 时,它告诉我内容只有 2.21GB,而档案却是 16GB。

这是否意味着备份过程中出现错误,或者档案大于其中的图像是正常的?

谢谢

答案1

备份

首先,关于备份的一般建议是:在测试并验证恢复过程有效之前,您不能依赖备份。有几种测试备份的方法:

  • 如果您手边有硬件并且它是关键备份,则可以完全恢复到物理硬件。
  • 如果缺少备用硬件,可以完全恢复到虚拟机。
  • 如果您不关心恢复可启动的操作系统,则提取数据并验证正确性和完整性。

我通常不会认为使用 WinZip 检查未压缩的大小特别有用。但是,您获得的结果可以表明您提供了不正确的信息count,这将导致……


dd你的命令有问题

count=(30 gb worth of sectors)

count看到这个,我的第一个想法是,备份驱动器时永远不应该指定。如果要备份特定分区,则应使用分区块设备(/dev/sdXN其中N是数字)。否则,您应该让dd整个驱动器都使用;通过指定count,您可能会(实际上几乎可以保证)丢弃数据并可能损坏文件系统。

在评论中,您提供了理由:

该驱动器为 500gb,我将最后一个备用硬盘给了朋友,因此我没有地方转储可以容纳 500gb 映像的文件。由于操作系统只有约 15 gb 的空间,因此为了安全起见,我指定了一个等于 30gb 扇区的数量

不幸的是,文件系统的工作方式并非如此。大多数文件系统不能保证所有数据都存储在驱动器的开头。


备择方案

还有其他几种方法可以实现您想要的效果。

仅存档文件/数据

如果您只想备份数据,而不太在意能否恢复可启动的操作系统,则可以使用命令备份文件tar。这意味着您仍将拥有数据,但您必须从头开始重新安装操作系统并手动恢复数据(以及任何已安装的应用程序)。

  1. 复制文件tar通过管道传输到档案gzip

压缩备份,剩余空间归零

这或多或少是你已经尝试过的。你的想法是正确的gzip:希望它能压缩任何未使用的空间(非常count可压缩)变为无。您只需从命令中删除即可。

不幸的是,这不一定能奏效,因为已删除的文件可能仍然存在于磁盘上,并且不会显示为空gzip。因此,你应该清除未使用的空间首先。您的备份过程将变成:

  1. zerofree用或类似方法清除未使用的空间
  2. 将驱动器复制到压缩映像,并使用dd(不使用count!)管道传输gzip

使用仅备份使用过的块的工具,例如partclone

有一些工具,例如partclone,它们足够智能,可以识别并仅备份使用过的块。Arch wiki 上有一些例子使用gzip,以及手动的下面有一些示例。这可以有效地替换dd您的管道。

恢复数据时您将需要再次使用相同的工具。

相关内容