我尝试了几种产品来恢复数据。
感谢 photorec 和 foremost,我拥有所有原始文件,但是,如果没有正确的文件名,这些图像就毫无用处。
感谢 testdisk,我获得了所有正确的文件名,但使用其取消删除选项恢复时,文件不完整且已损坏。
我如何获取正确、完整的数据和原始文件名?
我尝试过的事情:
我本来打算根据文件大小交叉引用测试磁盘名称和 photorec 文件,但大小不一致。
我研究了 testdisk 的更多高级选项,但似乎找不到任何会导致文件截断的东西。在这方面我可能还是错了。
Photorec 和 Foremost 似乎没有文件名恢复功能,而且似乎只有基于偏移量和大小方案的文件命名功能,因此它们单独无法完成这项工作。
我试图从 exif/metadata 中恢复文件名,但日期和文件名都与恢复的文件的创建时间和名称相同,这并没有什么用。
澄清:
只有从 testdisk 恢复的文件损坏了,它们似乎都是我用 photorec 成功恢复的文件大小的 80% 左右。问题是,正确的照片没有研究所需的正确文件名。
最终进展:
抱歉,大家,我可能花了太多时间尝试恢复文件,后来我发现我帮她恢复文件的女孩把文件带到了她的 IT 部门,他出于某种原因对驱动器进行了碎片整理,导致几乎所有文件都变得毫无用处,而且被覆盖了。好吧,我设法恢复了 60 个文件中的 6 个。虽然不是很糟糕,但仍然意味着需要重做很多工作。感谢您的建议。
答案1
使用 Foremost 的 audit.txt 恢复原始文件名:
File.read("audit.txt").scan(/-{4,}\n(File: .*?\n.*?)(?=-{4,})/m).flatten.map{|z|
f1=z.scan(/File: (.*?)\n/).flatten[0];
f2=z.scan(/[0-9]+:\t(.*?) \t/m).flatten;
extension=File.extname(f1);
[
f1,
f2.find{|q| File.extname(q)==extension}
]
}.each{|k,v|
extension=File.extname(k);
dirname=extension.sub(".","")
File.rename("#{dirname}/#{v}","#{dirname}/#{k}")
}
在“audit.txt”目录中运行这个Ruby程序。
答案2
好吧,这就是使用免费恢复应用程序的局限性。为什么不尝试 EaseUS、Stellar Phoenix 或其他一些恢复套件呢?这些套件使用实际文件名完全恢复的可能性相对较高。
我不知道哪种方法更有效,但听说付费恢复应用程序更可靠、更高效。