我有两个损坏的磁盘扩展4文件系统,无 RAID。我认为它们在逻辑上已损坏。在尝试任何操作来修复它们或从中恢复数据之前,我想将备份制作成映像或新磁盘,以防我使用错误的恢复工具进一步损坏磁盘。
问题
我如何在 Ubuntu 中进行备份?
如果我需要将映像恢复到磁盘,我可以将它们恢复到任何更大的磁盘吗?或者我必须将它们恢复到原始磁盘(以便运行磁盘修复工具或数据恢复工具)?
答案1
使用
ddrescue
语法如下:ddrescue -b 512 -c 65536 /dev/sdy /dev/sdx /path/to/mapfile
笔记:
-b 512
应与源设备的物理扇区大小匹配。-b 4096
如适用,请使用。上例中
/dev/sdx
是目标设备。它将被覆盖。
可以将整个磁盘的映像还原到更大的磁盘。但至少存在两个可能的问题:
笔记:
如果您怀疑源磁盘的物理状态不健康,那么合理的方法是
ddrescue
获取尽可能多的数据,然后使用副本(副本)。创建常规文件的副本(
/some/regular/file
而不是/dev/sdx
示例中的副本)可能是一个好主意。我更喜欢这种方法,它有以下优点:您可以创建一个稀疏文件(
ddrescue -S
)。如果目标文件系统支持压缩,那么您可以创建一个压缩文件。无论如何,您可能需要更少的空间来进行复制。如果目标文件系统支持奶牛,一个合理的方法是保留一份完整的副本 (
chattr -i
),并根据需要从中创建尽可能多的 CoW 副本 (cp --reflink=always
)。恢复工具可能会更改其处理的图像上的任何内容,因此应在这些次要副本上使用。
如果我是你,我会在新磁盘上创建 Btrfs,并将旧磁盘复制到那里的常规文件。我做过几次类似的事情。
另一方面,如果恢复工具无法处理常规文件,或者需要为分区创建单独的文件,或者需要特定的扇区大小,那么您可能需要
losetup
和kpartx
/或类似的工具。弄清楚这一点需要额外的努力;因此,您可能更喜欢复制到块设备。但如果您愿意学习,并确保保留主副本,则不会有任何风险:您可以尝试使用可消耗的辅助副本。在最坏的情况下,如果您完全迷失了方向,您可以将主副本复制到块设备,这就像从源块设备复制到目标块设备一样,即您最初想做的事情。请注意,由于这个中间文件系统,您将图像存储为常规文件,因此可能需要更多块设备(磁盘)。
可以将分区(而不是整个磁盘)复制到单独的常规文件中:您可以
ddrescue
单独运行/dev/sdy1
,/dev/sdy2
等等。从此类文件中恢复数据可能更容易一些,但恢复原始所有的磁盘可能会更硬。您的源磁盘包含 ext4 文件系统,使用
ddrescue
、dd
或cp
任何安全的方式复制它们。如果需要复制的磁盘包含 Btrfs,那么你需要格外小心因为两个具有相同 UUID 的 Btrfs 文件系统将被操作系统视为具有相同文件系统的两个设备。