Rsync奇怪的行为

这里是场景:在源服务器上,我们添加了一个新的磁盘arrays,因为旧的磁盘arrays空间不足。 所以,我使用“cp”将旧磁盘arrays中的内容复制到新磁盘arrays中。 然后,我卸载旧的磁盘arrays,并挂载新arrays,同时保留分区名称。

在第二天,我们的rsync进程运行,由于某种原因,它不只是复制增量/不同的文件,但似乎是通过整个文件和…我不知道它在做什么,有巨大的CPU由进程使用而不是很多的IO使用。 所以,我想这是做一些校验和过程来比较源和目标之间的数据,但不复制文件?

无论如何,有没有人见过这种rsync行为? 什么引发了这种行为? 是因为我“cp”的文件,因此文件是不同的? 是否有一个文件,其中rsync保存了之前扫描过的文件列表,以便它知道它只是复制增量文件?

如果您在运行cp时没有使用-p选项来保留“修改时间,访问时间,文件标志,文件模式,用户标识和组标识”(每个man页; ACL以及),那么很可能修改/访问时间已更改。

如果您的rsync命令包含-a-t选项,那么它将尝试更新所有这些新的访问时间。 我不确定什么是rsync的实际algorithm,但我相信,即使你的rsync命令没有试图更新修改/访问时间,它可能必须开始比较块或校验和块的一切一个新的修改时间,看看它是否真的改变了。

您可以使用-u--update来忽略接收器上较新的文件,这将阻止它同步所有相同的文件。 您也可以使用--size-only选项,但如果文件大小保持不变,则可能会错过更改。