由于这bug,我的一个源文件的内容被删除了。我搜索了很多,发现我可以用命令读取存储设备上的原始数据dd
,并且可以通过命令找到保存我的文件数据的块的地址hdparm
,但是我的文件的内容被删除了,并且大小它的值为零,所以hdparm
什么也没有显示。
因此,我读取了整个分区dd
并过滤了输出grep
,并找到了源文件的一行,因此我确信源文件的内容在我的存储设备上仍然存在。现在我有一些问题:
- 是否有优化的方法来恢复文件内容?
- 删除该文件然后使用恢复工具恢复它是一个好主意吗?
- 有没有办法在找到我的源文件的一行后找到地址?
- 有没有办法找到旧块的地址?
- 有没有办法强制
grep
命令在找到所需行后打印(例如)1000 行? - 我不熟悉文件如何保存在目录中,目录是否有物理边界?我的意思是,我可以找到目录的起始地址和结束地址来读取该目录的所有内容吗? (我想阅读整个
src
文件夹)。
基本上,我怎样才能拿回我的字段?
笔记:
- 我用的是linux。
- 我的分区的文件系统是ex4。
- 我的存储设备是SSD。
谢谢。
答案1
非常简要地:
它很复杂,并且取决于您的文件系统。您可以例如使用调试文件探索 ext2、ext3 或 ext4 文件系统。确保正确阅读文件系统的工作原理,了解索引节点和日志。
如果您找到了源文件中的某些行,则可以使用它来识别块,这反过来可以帮助您识别 i 节点或日记帐分录。
准备好投入至少几天的阅读、理解和实验,以了解所有这些是如何运作的。另外,对硬盘进行完整备份现在,并且在进行备份之前不要使用硬盘。或者您的文件提醒很可能会被覆盖(如果还没有)。
对于未来,我还建议对源文件使用版本控制,然后由于 VSCode bug 丢失一些文件也没什么大不了的 - 最坏的情况是你必须重做自上次提交以来的更改。
答案2
我能够在计算机崩溃后完全恢复已删除的文件ext4magic。
它是一个令人印象深刻且非常强大的工具,但也非常技术性。然而,上述网站是有关 ext4 文件系统的知识宝库。
我很久以前就这样做了,记不清我到底是怎么做的(我只记得它涉及-r
,-m
或-I
选项)。但从上面的链接开始是一个很好的例子使用场景在同一个网站上。
旁注:网站上的英语有时非常近似,以至于作为非英语母语的我不得不依赖深L翻译德语原文以获得更容易理解的翻译。但我想,如果您的母语是英语,或者甚至是德语,那么您就很适合去。这决不会削弱开发人员在开发应用程序和收集所有这些信息方面所做的令人印象深刻的工作,也不会削弱他尽其所能翻译本文档的努力!