![文件系统:在没有根 inode 或日志的情况下从 ext4 恢复文件名?](https://linux22.com/image/130396/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%EF%BC%9A%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%A0%B9%20inode%20%E6%88%96%E6%97%A5%E5%BF%97%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%BB%8E%20ext4%20%E6%81%A2%E5%A4%8D%E6%96%87%E4%BB%B6%E5%90%8D%EF%BC%9F.png)
当我将分区的前几兆字节清零时,根 inode 和日志都被意外地从我的 ext4 文件系统中删除了。不过,我的数据已全部通过 photorec 成功恢复。除了原始数据之外,我是否还可以恢复任何内容?有文件名吗?元数据?或者所有这些东西通常都存储在磁盘分区的开头吗?
答案1
运行e2fsck
通常是恢复文件系统的最佳方法,即使部分文件系统丢失,它也可以做得非常好。这是因为 ext2/3/4 对文件系统元数据(索引节点、位图等,但不是目录)使用相对静态的布局,并且在文件系统的多个位置具有超级块和关键组描述符表的冗余副本。
根据文件系统的格式化方式(以及时间),文件系统的开头可能不包含除根 inode 本身之外的大量关键信息。第一组中可能有很多索引节点,但如果文件系统未满,它们通常不会被使用。 e2fsck 运行会将其发现的任何正在使用的没有目录条目(保存文件名)的文件和目录放入该lost+found
目录中。这些文件和目录的命名类似于#1234
,但您可以通过其内容、UID、GID 来识别它们,并将它们移动到文件系统中的适当位置(可能在重新创建父目录之后)。
更复杂的工具,例如ext3grep
可以恢复更多信息(如果您有较旧的 ext3 文件系统,因为它最近没有更新),例如目录块,但由于文件系统的整个开头都被删除,因此可以恢复的信息受到限制。被恢复。
答案2
文件名等分布在磁盘的 inode 中,因此它们(其中大多数,有些可能已归零)应该仍然存在。
如何找到他们是另一回事。当根 inode 丢失时,我认为没有任何方法可以找出哪些块包含 inode,这意味着您只剩下读取原始数据块并猜测哪些数据块是什么的程序,而 inode 可能很难找到识别,我不知道是否有任何程序可以做到这一点(我没有听说过)。