使用修改日期的文件进行比较。安全吗?

时间:2010-06-15 08:34:46

标签: file comparison

我想制作一个程序,在服务器和客户端之间进行单向文件夹同步。我想使用ModifiedDate作为标准,前提是只使用服务器文件的日期。过程将不会使用客户端上的文件的修改日期。它将从服务器读取日期,并将它们与上次运行过程时从服务器读取的日期进行比较。 你觉得这样安全吗? 编辑文件时是否有可能不会更改修改日期,或者在不触及文件内容的情况下更改修改日期(例如来自某些奇怪的防病毒程序)?

2 个答案:

答案 0 :(得分:1)

不要指望文件的修改日期。

奇怪的程序(防病毒等)不是问题,而是你不能指望客户端和服务器时钟同步。

为什么不直接进行差异或哈希计算呢?你无法得到比这更好的比较。

将性能考虑因素付诸实践,您可以使用以下启发式方法:

  1. 如果日期没有改变,那么文件显然是相同的
  2. 如果日期已更改,则文件内容可能已更改,可能没有(例如:它已被touch编辑)。在这种情况下,为了获得明确的答案,您必须检查文件以某种方式
  3. 底线:修改日期总是可以给你一个真正的否定(文件未更改),但有时可能会产生误报 - 这种情况下你必须验证。

答案 1 :(得分:0)

您没有提到您所使用的操作系统,但在UNIX平台上,修改时间可以由客户端代码设置为它想要的任何值(请参阅utimes() API或touch命令) 。因此,您不应该依赖修改时间来告诉您文件是否已更改。我认为Windows有点相似。