我当时正在fsck
NAS 上的 ext4 文件系统上进行操作,遇到硬错误并退出(不幸的是我已经丢失了错误消息)。当我立即重新安装卷以查看它是否损坏(当然是只读)时,我发现驱动器上几乎所有数据都丢失了(近 8TB,当然,我没有备份)其中大部分......我知道,我知道)。存在根目录之外的一个目录(并且似乎包含其所有内容),但根目录中的其他目录均不再存在。中有一些文件/lost+found
,但这只是磁盘上文件的一小部分。
我一直在磁盘上尝试各种数据恢复工具,并fls
从 SleuthKit 中找到了该程序(以及一些使用它的有用脚本)。它似乎“找到”根目录,但将它们显示为已删除:
d/- * 0: home
d/- * 0: photos
d/- * 0: music
d/- * 0: games
d/- * 0: books
d/- * 0: docker-registry
d/- * 0: cache
(*
意思是删除,并且0
是索引节点号,它似乎已被 清零fsck
。)
不幸的是,根据其联机帮助页,该-r
选项fls
无法递归到已删除的目录树。有没有办法以某种方式“取消删除”这些目录条目?我希望目录条目中的元数据仍然存在,fsck
只是混淆并删除了指向根条目的任何内容,并且如果我能以某种方式恢复它们,我就可以fls
递归地找到所有旧内容。
我尝试过的其他事情
我尝试过其他工具,例如ext4magic
和extundelete
,但这些工具似乎只是在日志中查找最近删除的条目,并且在那里找不到任何内容(我假设fsck
修改文件系统时,它会绕过日志)。
我正在photorec
磁盘上运行(事实证明,现在它比照片恢复的能力要多得多),但估计需要 2000 小时(超过 11 周)才能检查整个磁盘。运行大约 8 个小时后,它在 65k 个文件中发现了大约 45GB 的数据,但它们当然有无用或几乎无用的名称,并且没有目录结构;筛选迄今为止发现的数量相对较少的文件很容易需要几个月的时间。
我还阅读了 提供的命令列表debugfs
,但我实际上没有看到任何有用的东西,但我可能只是误解了它的一些功能。
我尝试过foremost
,但在开始查看驱动器后大约一分钟,它出现了段错误,并且事先没有有用的输出。 scalpel
,它基于foremost
,只是打印其启动消息,然后立即以状态 1 退出,而不告诉我出了什么问题。
并发症
该卷大小约为 12TB,是通过 LVM2 连接在一起的两个 RAID5 阵列的一部分。不幸的是,我没有可用空间来制作文件系统的映像。到目前为止,我一直在使用只读恢复工具,但如果有办法恢复根目录条目,我可能必须对实际磁盘进行修改。
我的恢复暂存空间是我设法找到的 6TB 卷;如果photorec
确实找到了丢失的所有内容,那么在完成之前就会耗尽空间。
综上所述...
因此,在底部回顾一下我的问题:是否有一种方法可以“取消删除”已从fls
根目录找到的目录条目,希望它们的递归内容可能有效且可用?