如何在 ext4 文件系统上恢复已删除的目录条目?

如何在 ext4 文件系统上恢复已删除的目录条目?

我当时正在fsckNAS 上的 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递归地找到所有旧内容。

我尝试过的其他事情

我尝试过其他工具,例如ext4magicextundelete,但这些工具似乎只是在日志中查找最近删除的条目,并且在那里找不到任何内容(我假设fsck修改文件系统时,它会绕过日志)。

我正在photorec磁盘上运行(事实证明,现在它比照片恢复的能力要多得多),但估计需要 2000 小时(超过 11 周)才能检查整个磁盘。运行大约 8 个小时后,它在 65k 个文件中发现了大约 45GB 的数据,但它们当然有无用或几乎无用的名称,并且没有目录结构;筛选迄今为止发现的数量相对较少的文件很容易需要几个月的时间。

我还阅读了 提供的命令列表debugfs,但我实际上没有看到任何有用的东西,但我可能只是误解了它的一些功能。

我尝试过foremost,但在开始查看驱动器后大约一分钟,它出现了段错误,并且事先没有有用的输出。 scalpel,它基于foremost,只是打印其启动消息,然后立即以状态 1 退出,而不告诉我出了什么问题。

并发症

该卷大小约为 12TB,是通过 LVM2 连接在一起的两个 RAID5 阵列的一部分。不幸的是,我没有可用空间来制作文件系统的映像。到目前为止,我一直在使用只读恢复工具,但如果有办法恢复根目录条目,我可能必须对实际磁盘进行修改。

我的恢复暂存空间是我设法找到的 6TB 卷;如果photorec确实找到了丢失的所有内容,那么在完成之前就会耗尽空间。

综上所述...

因此,在底部回顾一下我的问题:是否有一种方法可以“取消删除”已从fls根目录找到的目录条目,希望它们的递归内容可能有效且可用?

相关内容