检测并恢复损坏的文件

检测并恢复损坏的文件

我们有一个应用程序在工厂的专用机器(在 NTFS 磁盘上运行 Windows Embedded)上运行。在极少数情况下,“损坏的文件”会导致软件停止运行。删除损坏的文件可以解决问题……但文件中的所有数据都会丢失。

到目前为止,在实验室中重现此问题已证明是不可能的。我们终于设法找回了一台可以演示此问题的 PC。到目前为止,所有已知的“损坏文件”实例都是我们的软件使用的 INI 文件。当我尝试查看该文件(在记事本中)时,会显示以下错误:

记事本显示的错误

尝试在 Windows 资源管理器中复制文件进行离线分析时出现以下错误消息:

尝试复制文件时显示错误

该文件的属性在命令提示符中看起来正常。尝试使用 手动复制该文件copy mStats.ini D:会产生此错误:

命令提示符中显示错误

将 Windows 加载到安全模式无济于事(文件仍然损坏且无法恢复)。这似乎指向 Windows NTFS 主文件表 (MFT) 中的损坏条目。系统的其余部分似乎不受影响。删除该文件可以完全恢复。

  • 什么原因导致这种情况发生?
  • 数据可以恢复吗或者MFT可以更正吗?
  • 是否有可能重现此类问题(无论是在软件中还是手动)?
  • 是否有任何关于读取/写入文件的一般建议来保证这种事情不会发生?

更新 1

根据建议这里chkdsk C: /V从命令提示符运行并返回:

\PATH\mStats.ini
Windows found errors on the disk, but will not fix them
because disk checking was run without the /F (fix) parameter.
\PATH\mStats.ini  first allocation unit is not valid. The entry will be truncated.
\PATH\mStats__.ini
\PATH\mStats__.ini  first allocation unit is not valid. The entry will be truncated.

文件仍然损坏。我正忙着用该/F标志重新运行命令。

更新2

chkdsk使用该标志运行后/F,文件现在已修复。这实际上并不是一个好消息,因为现在我的电脑上没有损坏的文件!在 Windows > 应用程序事件日志中出现以下条目:

\PATH\mStats.ini  first allocation unit is not valid. The entry will be truncated.
\PATH\mStats__.ini  first allocation unit is not valid. The entry will be truncated.

还有大约十几个其他文件(大部分在Temporary Internet Files文件夹中)也存在同样的问题。

答案1

如果缺乏广泛测试和重现问题的能力,任何建议都只是猜测。

然而,它肯定声音就像软件问题一样。如果是硬件问题,例如硬盘或内存,那么从统计上看,只有单个文件损坏的可能性极低。不过,检查硬件也无妨。运行memtest86测试机器内存是否有故障。此外,在硬盘上运行磁盘扫描程序并检查是否有错误。更好的方法是用固态磁盘替换硬盘,以防工厂中的振动导致错误。

尝试使用十六进制编辑器打开损坏的文件,如下所示。检查是否有任何数据可读且可恢复。作为安全措施,请创建一个脚本或使用一个程序,以您认为可接受的频率备份该文件。

最后,我会与该软件的制造商进行沟通,因为听起来该程序正在将损坏的数据写入文件,从而使其无法读取。

相关内容