场景如下:在源服务器上,我们添加了一个新磁盘阵列,因为旧磁盘阵列空间不足。因此,我使用“cp”将内容从旧磁盘阵列复制到新磁盘阵列。然后,我卸载旧磁盘阵列并安装新阵列,同时保留分区名称。
第二天,我们的 rsync 进程运行,出于某种原因,它不仅复制了增量/不同的文件,而且似乎正在遍历整个文件......我不确定它在做什么,该进程占用了大量的 CPU,而 IO 使用率却不高。所以,我猜它正在执行一些校验和过程来比较源和目标之间的数据,而不是复制文件?
无论如何,以前有人见过这种 rsync 行为吗?是什么引发了这种行为?是因为我“cp”了文件,因此文件不同吗?是否有一个文件,其中 rsync 保存了它之前扫描过的文件列表,以便它知道它只会复制增量文件?
答案1
如果您在运行时没有使用-p
保留“修改时间、访问时间、文件标志、文件模式、用户 ID 和组 ID”的选项(根据页面man
;ACL 也是如此)cp
,那么修改/访问时间很可能发生了更改。
如果您的rsync
命令包含-a
或-t
选项,则它会尝试更新所有这些新的访问时间。我不确定rsync
实际的算法是什么,但我相信即使您的rsync
命令没有尝试更新修改/访问时间,它也必须开始比较具有新修改时间的所有内容的块或块的校验和,以查看它是否确实发生了更改。
答案2
您可以使用-u
或--update
忽略接收器上较新的文件,这将阻止它同步所有相同的文件。您也可以使用该--size-only
选项,但如果文件大小保持不变,这可能会错过更改。