Robocopy 如何确定文件是否被“更改”?

use*_*512 25 robocopy

我在这里寻找有关 Robocopy 算法如何确定文件是否已更改的详细信息。例如,如果我使用 /mir 参数,Robocopy 必须确定哪些文件已更改,哪些未更改。它是否使用修改后的时间戳或文件大小,散列所有的组合?

有趣的是,它在文档中只字未提。

use*_*512 29

好吧,在花了一天时间研究这个、阅读文档并为自己测试(所有结果都相同)之后,我有了答案。

简短的回答是:Robocopy 的默认值是(除非您通过参数指定不同的内容)它将复制时间戳文件大小 不同的任何文件。请记住 Robocopy 始终从源复制到目标。因此,如果您在目标中有更新和更大的文件,Robocopy 将用源中的旧文件和较小文件覆盖它(这就是我强调“不同”一词的原因 - 它不是更新更大,只是不同)。

在更深层次上,即使文件的属性不同,您也可以使用 /it 选项检查并复制那些不同的属性 - 即使文件大小和时间戳相同(好吧,对于 100%,我不知道它是否将复制文件或仅复制缺少的属性,但由于文件相同,结果将相同)。

我找到了另一个线程中引用的冗长文档 - 它是关于 XP010 版本(我猜它是 Windows XP)。但是对于 robocopy 根本没有更新的文档。您可以在此处找到文档:

http://theether.net/download/Microsoft/Utilities/robocopy.pdf (阅读“使用 Robocopy 文件类”部分,那里的所有内容都非常精确)

该文档是关于旧版本的 Robocopy(在 Win7 下,您通常使用 XP027 版)-但您可以在此站点上检查版本的更改-它有一个非常简洁的概述:

http://yarcgui.wilkes.es/De/RoboCopy/index.htm

最重要的是,即使是 XP 和 Win7 之间也没有太大区别——只有很小的区别,变化是添加参数——而不是改变它们(参数 /mir 除外)。而且我认为可以肯定地说比较机制不会改变 - 因为与添加更多参数的微小变化相比,这将是一件巨大的事情。

这可能是没有新文档的原因。

如果您正在寻找相同的信息并正在阅读本文,希望对您有所帮助。我努力做到准确,并小心翼翼地进行研究。

  • 它使用创建的、修改的还是同时使用两者的时间戳? (2认同)