恢复克隆的有错误的磁盘映像

恢复克隆的有错误的磁盘映像

我有一个 500 GB 的磁盘映像,它是使用以下命令创建的:

# dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c > backup.img.gz

在超过约 420 GB 的某个点,出现了以下错误(大约 15-20 个)。错误之间穿插了几个 GB 的数据(例如,第一个错误出现在 420 GB,下一个出现在 430 GB,下一个出现在 436 GB,依此类推)。

dd: error reading '/dev/sda': Input/output error

恢复此磁盘映像是否安全?

答案1

这取决于你所说的“安全”是什么意思。

将映像恢复到健康的驱动器不会损坏驱动器,因此从这个意义上讲是安全的。但是映像还是有些损坏,并且可能会导致文件系统和文件损坏,因此从另一个意义上讲并不安全。

我说的是“您可能会得到损坏的文件”,而不是“您会得到损坏的文件”,因为所有这些错误都可能出现在标记为空的块中。这是因为dd它对文件系统和可用空间的概念一无所知,它会读取所有数据。如果在创建映像时有大量可用空间,您可能很幸运,所有文件和关键数据都在映像中。错误不在磁盘的开头,因此分区表将正常(除非它是 MBR,并且有带有逻辑分区的扩展分区,并且某些逻辑分区条目尚未被读取dd;这是可能的,因为任何逻辑分区都是在它开始之前定义的,而不是在磁盘的开头,如主分区和扩展分区)。

另一方面,你可能没有那么幸运,你可能不仅会遇到一些损坏的文件,还会遇到损坏的文件系统,这可能表现为(例如)缺少应该包含许多文件的整个文件夹。比较这个问题;在访问文件和文件夹时,您也遇到类似的情况。请阅读我在那里的回答,尤其是第二次编辑,我解释了可能发生的情况。

其中一条评论建议

将其还原到其他媒体,然后手动复制您想要的文件。

要复制您不需要恢复的文件到其他媒体。您可以直接安装映像。使用kpartxmount -o offset=…访问映像内的分区。例如,尝试以下顺序(某些步骤需要sudo):

  • gzip -dc < backup.img.gz > backup.img(一会儿fsck也许其他一些工具会改变图像,所以最好保留原始档案以防万一,我希望你有足够的可用空间);
  • kpartx -av backup.img(读取输出,图像内部的分区现在可用/dev/mapper/loop?p?);
  • 使用您所选择的fsck/dev/mapper/loop?p?
  • /dev/mapper/loop?p?您选择的坐骑;
  • 复制文件;
  • umount …
  • kpartx -dv backup.img清理。

如果您发现文件或文件夹丢失,您可以使用恢复软件,例如photorec。这类好的软件应该可以对映像进行操作,而无需将其恢复到物理设备。

相关内容