我想制作一个程序,在服务器和客户端之间进行单向文件夹同步。我想使用ModifiedDate作为标准,前提是只使用服务器文件的日期。过程将不会使用客户端上的文件的修改日期。它将从服务器读取日期,并将它们与上次运行过程时从服务器读取的日期进行比较。 你觉得这样安全吗? 编辑文件时是否有可能不会更改修改日期,或者在不触及文件内容的情况下更改修改日期(例如来自某些奇怪的防病毒程序)?
答案 0 :(得分:1)
不要指望文件的修改日期。
奇怪的程序(防病毒等)不是问题,而是你不能指望客户端和服务器时钟同步。
为什么不直接进行差异或哈希计算呢?你无法得到比这更好的比较。
将性能考虑因素付诸实践,您可以使用以下启发式方法:
touch
编辑)。在这种情况下,为了获得明确的答案,您必须检查文件以某种方式。底线:修改日期总是可以给你一个真正的否定(文件未更改),但有时可能会产生误报 - 这种情况下你必须验证。
答案 1 :(得分:0)
您没有提到您所使用的操作系统,但在UNIX平台上,修改时间可以由客户端代码设置为它想要的任何值(请参阅utimes()
API或touch
命令) 。因此,您不应该依赖修改时间来告诉您文件是否已更改。我认为Windows有点相似。