因此,我首先比较两个目录:
[root@135759 ]# rsync -av test1/ test2/
building file list ... done
sent 128 bytes received 20 bytes 296.00 bytes/sec
total size is 6 speedup is 0.04
它们都是同步的现在,让我在 test1 中创建一个文件并将其复制到 test2
[root@135759 ]# touch test1/hello4.php
[root@135759 ]# scp test1/hello4.php test2/hello4.php
我确认它们是一样的:
[root@135759 test2]# md5sum test1/hello4.php
d41d8cd98f00b204e9800998ecf8427e hello4.php
[root@135759 test1]# md5sum test2/hello4.php
d41d8cd98f00b204e9800998ecf8427e hello4.php
因此,运行 rsync 将显示 0 个文件。为什么输出不正确?
[root@135759 ]# rsync -avn test1/ test2/
building file list ... done
hello4.php
sent 116 bytes received 24 bytes 280.00 bytes/sec
total size is 6 speedup is 0.04
答案1
文件内容相同,因此 rsyinc 发送的数据很少。但我怀疑文件上的某些元数据不同。我猜想创建时间戳与修改时间戳可能是基于您的示例。在第二次运行 rsync 之前检查这些。当 rysnc 看到不同的时间戳时,它会“传输”该文件,即使不涉及文件数据,只涉及元数据。
答案2
rsync 默认会根据文件修改时间和大小进行“快速”比较;即使是本地时钟漂移有时也会导致问题,因此如果您在决定跳过文件进行传输之前确实需要知道文件完全相同,请使用 rsync 的--checksum
选项,该选项将在两端对文件进行校验并比较结果。请注意,对于涉及大文件或许多文件或两者的操作,此选项可能会非常耗费 CPU 并大大增加同步所需的时间。