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

File 使用修改后的文件日期进行比较。安全吗?,file,comparison,File,Comparison,我想制作一个过程,在服务器和客户端之间对文件夹进行单向同步。我想使用ModifiedDate作为标准,前提是只使用服务器文件的日期。过程根本不会使用客户端上文件的修改日期。它将从服务器读取日期,并将其与上次运行过程时从服务器读取的日期进行比较。 你认为这安全吗? 是否有可能在编辑文件时不会更改修改日期,或者在不接触文件内容的情况下更改修改日期(例如,来自某些奇怪的防病毒程序)?不要指望文件的修改日期 奇怪的程序(抗病毒病毒等)并不是问题,更多的是你不能指望客户端和服务器时钟同步 为什么不直接进行

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

不要指望文件的修改日期

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

为什么不直接进行diff或hash计算呢?没有比这更好的比较了

考虑到性能因素,您可以使用以下启发式方法:

  • 若日期并没有改变,那个么文件显然是相同的
  • 如果日期已更改,则文件内容可能已更改,也可能未更改(例如:它已被
    touch
    ed)。在这种情况下,为了得到明确的答案,您必须以某种方式检查文件

  • 一句话:修改日期总是给你一个真正的否定(文件未更改),但有时可能会产生一个假肯定-这种情况下你必须验证。

    不要指望文件的修改日期

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

    为什么不直接进行diff或hash计算呢?没有比这更好的比较了

    考虑到性能因素,您可以使用以下启发式方法:

  • 若日期并没有改变,那个么文件显然是相同的
  • 如果日期已更改,则文件内容可能已更改,也可能未更改(例如:它已被
    touch
    ed)。在这种情况下,为了得到明确的答案,您必须以某种方式检查文件

  • 一句话:修改日期总是会给你一个真正的否定(文件未更改),但有时可能会产生一个假肯定-这种情况下你必须验证。

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

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

    真的很大的文件可能会减慢速度,也许?我想知道校验和解决方案是否也会有同样的缺点…请仔细阅读我的问题。我的意思是,我只打算将服务器日期与上次同步期间使用的服务器日期进行比较。将不使用客户端日期@htw直截了当的差分和校验和(需要完全读取文件才能计算)都不够快,无法满足我的要求。所以问题还是一样的:修改日期是否有可能在不实际修改文件的情况下更改?或者,在修改文件时,修改日期是否会发生变化?这一点很好!只有在日期发生变化的情况下,我才能计算出散列值。真正大的文件可能会减慢速度,也许?我想知道校验和解决方案是否也会有同样的缺点…请仔细阅读我的问题。我的意思是,我只打算将服务器日期与上次同步期间使用的服务器日期进行比较。将不使用客户端日期@htw直截了当的差分和校验和(需要完全读取文件才能计算)都不够快,无法满足我的要求。所以问题还是一样的:修改日期是否有可能在不实际修改文件的情况下更改?或者,在修改文件时,修改日期是否会发生变化?这一点很好!只有在日期改变的情况下,我才能计算哈希值。是的,我忘了提到我说的是Windows。在Windows上,也可以更改修改日期程序。但我的问题在这个意义上不是技术性的。我确信这是可能的。问题是是否有人看到了这种情况。由于文件将被复制到临时位置,并且仅由我的应用程序使用,因此我不希望修改日期有任何更改。我唯一关心的是奇怪的应用程序,比如杀毒软件,以及它们是否会给我带来问题。是的,我忘了提到我说的是Windows。在Windows上,也可以更改修改日期程序。但我的问题在这个意义上不是技术性的。我确信这是可能的。问题是是否有人看到了这种情况。由于文件将被复制到临时位置,并且仅由我的应用程序使用,因此我不希望修改日期有任何更改。我唯一关心的是奇怪的应用程序,比如防病毒软件,以及它们是否会给我带来问题。