什么原因可能导致文件最终被清零?

什么原因可能导致文件最终被清零?

客户给我们发了一个外部硬盘,其中至少有一半的文件已损坏。这些文件类型多种多样(图片、文档等),损坏的模式不明显。它们显示为原始大小,但是,当我在十六进制编辑器中打开它们时,它们只填充了空值。数据已完全被 00 替换。

什么原因会导致这种情况发生?这些文件可能是从另一台机器复制到驱动器上的。这可能是由于传输过程中出现问题导致的,还是更有可能是文件在源头损坏了?

答案1

似乎元数据是正确的,所以文件出现在目录树中,有名称、访问模式等,但是数据本身就是腐败的(没有传到媒体)。

如何实现这一点取决于文件系统、挂载选项、驱动器的缓存模式等等。

让我们举ext4个例子,其中相对容易实现这一点。默认安装选项使用 journal元数据文件系统通常保证磁盘上的结构在任何情况下都是正确的,并且一切看起来要么好像没有对驱动器进行任何操作,要么操作已完全应用。就像 ACID 数据库中一样。但是数据默认情况下不记录日志,因此系统可能已完成系统调用,向应用程序报告成功,创建所有必要的结构(目前仅在日志中),而数据驻留在缓存中……现在电源已切断。当您再次打开系统电源并安装此卷时,文件系统驱动程序将重放日志,文件将出现,但数据将是以前使用块留下的垃圾。这些垃圾可能确实是零。最后,在写入过程中切断电源可能会产生零填充的文件。我预计在过早拔下驱动器时(例如拔出 USB 电缆)也会出现同样的结果。

考虑到您谈论的是外部驱动器,这种拔出情况很可能发生。当然,其他文件系统也有可能出现这种情况。

相关内容