NTFS 是否会在同一物理位置(扇区)覆盖文件?

NTFS 是否会在同一物理位置(扇区)覆盖文件?

我想恢复 NTFS 分区上被覆盖的文件。

假设我在目录中有一个名为 A 的文件。

我创建了另一个文件,但我用相同的名称“A”保存了这个新文件。新文件是否会存储在 A 的现有物理位置(这意味着 A 的原始内容将永远无法恢复),或者新文件是否会大概占用磁盘上的另一个物理位置(这意味着原始内容可能大概还能恢复吗?

答案1

这取决于应用程序。例如,Word 会写入新文件,然后删除旧文件,这样就不会覆盖旧文件,并且可以恢复。另一个应用程序可能会就地重写文件,然后截断为正确的大小,在这种情况下,您将丢失所有数据。

如果先截断文件(设置物理大小,而不是逻辑大小),然后重写,我不确定如果不测试会发生什么。如果删除旧文件,然后创建一个同名的新文件,我认为这是偶然事件。

如果文件足够小,可以放入文件的 MFT 条目(~4k?我不记得了),则更有可能覆盖数据。

答案2

这篇听起来可信的新闻组帖子以及 Tony Lee 的回答表明,对于大多数应用程序来说,“另存为”覆盖与删除相同,然后是文件系统中的新建。我可以同意这种概括,因为作为一名程序员,这是有道理的。如果我要实现“另存为”功能,则没有理由使用文件打开进行重写 API 调用,因为此代码路径仅在极少数覆盖情况下使用。程序员更有可能在极少数需要的情况下使用新建文件调用和快速文件删除调用。

也就是说,没有可靠的方法可以知道覆盖应用程序的程序员如何处理现有文件,除非你可以询问他们,或者使用 FileMon 或进程监控

平均而言,我猜想与任何其他被删除并写入磁盘的文件相比,恢复被应用程序“覆盖”的文件的可能性仅略低一些。

毋庸置疑,NTFS 恢复删除不是一种非常可靠的恢复策略。如果这种情况可能再次发生,请查看某种版本控制系统来补充您的日常备份策略。不幸的是,曾经是 VMS 和 Netware 等某些操作系统的标准功能的自动文件版本控制已不再是主流市场的常见功能。

答案3

有可能,也有可能没有,目前还无法确定。NTFS 会将写入文件放在它认为最好的位置,无法保证它会将文件放在何处。如果您想恢复文件,请尽快执行,等待的时间越长,旧文件被覆盖的可能性就越大。

相关内容