我有一个 4TB 的驱动器,上面有一个 BTRFS 文件系统(没有分区),它被 Windows 安装程序错误地覆盖,它确定该空间未使用并且会将其用于其他用途(恢复?)并在其上放置一个 100MB 的 FAT 分区。
简而言之,驱动器的所有内容目前都无法访问。大多数情况下,我的许多真正重要的文件都备份在我的家庭服务器上,因此损坏并不严重,但总会有一些恶意文件在备份中遗漏,只有在备份时才会发现。因此,我一直在寻找某种方法来恢复文件系统或浏览磁盘上仍然存在的任何内容。
到目前为止,我已经完成了以下工作:
我已经运行,btrfs rescue super-recover
输出以下内容:
$ sudo btrfs rescue super-recover -v /dev/sda
All Devices:
Device: id = 1, name = /dev/sda
Before Recovering:
[All good supers]:
device name = /dev/sda
superblock bytenr = 65536
device name = /dev/sda
superblock bytenr = 274877906944
[All bad supers]:
device name = /dev/sda
superblock bytenr = 67108864
Make sure this is a btrfs disk otherwise the tool will destroy other fs, Are you sure? [y/N]: y
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
ERROR: cannot read chunk root
Failed to recover bad superblocks
我也尝试运行sudo btrfs rescue chunk-recover
,但结果也是类似的:找不到有效的树根。
接下来,我尝试使用上面的 ID 将磁盘恢复到文件位置:
$ sudo btrfs restore -t 78515 -u 1 /dev/sda /tmp/a
No valid Btrfs found on /dev/sda
Could not open root, trying backup super
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
bad tree block 25001984, bytenr mismatch, want=25001984, have=0
ERROR: cannot read chunk root
Could not open root, trying backup super
类似的问题:由于 100MB FAT,不再有有效的根!
最后,我知道可以使用浏览文件选项testdisk
,但似乎无法浏览 BTRFS 文件系统中所有剩余的文件:唯一的选项是克隆磁盘的映像。
是否有人有任何潜在的解决方案,可以浏览无效的 BTRFS 文件系统上的单个文件或部分重新创建根目录?我实际上不需要恢复整个文件系统,理想情况下,我可以从子卷(例如@pictures
)中获取尽可能多的文件,这些文件仍然足够“有效”以成为真实文件。有没有办法重新创建 BTRFS 文件系统的根树以尝试恢复磁盘上的尽可能多的文件?
当我这样做时,我可以看到一个文件名表,sudo strings /dev/sda | less
这似乎意味着我可能能够在磁盘的下方找到与这些文件相关的一些数据,但我不知道如何检查。
我不知道 btrfs 具体如何在磁盘上存储数据,但是我知道其他文件系统(例如 ext[2-4])倾向于将元数据(例如 inode)放在磁盘的前面,如果 btrfs 也是一样,那么覆盖前 100 MB 可能会擦除大部分或全部元数据。
也就是说,如果它只创建了 100 MB 的文件系统,而没有填充它,那么它可能只会覆盖 100 MB 的一部分,因此大部分元数据可能都会保留下来。也许吧。
更熟悉 btrfs 的人将能够更好地帮助您解决所走的路径。
然而,还有另一条可能的途径,一条不涉及文件系统结构的详细知识的途径:寻找已知的数据签名。
有一个名为“photorec”的工具可以扫描磁盘映像并查找已知文件格式,并将找到的任何内容复制。它最初是为从 SD 卡恢复 jpeg 而编写的,但后来扩展到涵盖许多已知文件格式。
因此,如果您所做的没有任何结果,您可以尝试 photorec。