几天前,我不小心批量删除了我的下载文件夹,现在我正试图恢复被删除文件中的一个 Excel 文件。使用文件恢复程序,我发现了两个版本,根据恢复程序,它们处于“优秀”状态,并且“未检测到覆盖的群集”。但是,当我恢复其中一个文件并尝试在 Excel 中打开它们时,我收到以下错误消息:
“Excel 无法打开文件“filename.xlsx”,因为文件格式或文件扩展名无效。请验证该文件是否已被删除,以及文件扩展名是否与文件格式匹配。”
我尝试了几种不同的技术,包括:
- 重命名为 .zip,然后使用 7zip 解压(导致“文件不是存档”错误)
- 使用 Excel 恢复工具(我尝试过的两种工具都无法恢复文件)
- 使用 Excel 的内置恢复工具(告诉我它无法恢复文件)。
我只需要查看 2 列数据,即使它是纯文本或编码的,但我似乎无法在任何方式中打开它。有什么想法吗?
答案1
使用文件恢复程序,我发现了它的 2 个版本,根据恢复程序,它们处于“优秀”状态,并且“未检测到覆盖的群集”。
如果文件从 SSD 中删除(然后又恢复),这并没有多大意义,所以这可能是正在发生的事情。
文件恢复工具、取消删除类型的工具可以将已分配(但现在已“释放”)的簇与文件系统“位图”进行比较,其中跟踪了已使用的簇。如果分配给已删除文件的簇在位图中标记为“未使用”,则取消删除工具通常会将可恢复性评为优秀或类似。只是假设已释放的簇尚未被覆盖。
然而,在 SSD 上,会向 SSD 发送额外的 TRIM 命令。在大多数情况下,SSD 将“取消映射”相关扇区(属于已删除文件的一部分),如果读取这些扇区,则仅返回零。换句话说,文件恢复/取消删除工具正在恢复填充了零的文件。
还需要注意的是,在许多文件系统中,“文件条目”本身并没有被删除,这就是取消删除/文件恢复工具仍然可以检测到已删除的文件的原因。
所以:
文件删除 > 文件在文件系统级别被标记为“已删除” > 分配给文件的簇被“释放” > 操作系统将簇地址转换为 LBA 扇区地址 > 操作系统向硬盘发送带有一系列 LBA 地址的 TRIM 命令 > SSD“取消映射”LBA 地址。在写入这些 LBA 地址之前,如果从这些 LBA 地址读取,SSD 会提供零填充扇区。
我制作了这个视频来演示这一点:https://youtu.be/NyLQbxnPurc