当我执行rsync –dry-run -rv时,rsync列出了除时间戳之外相同的文件.
我的理解是,只有这些标志(它们并没有真正改变比较行为),rsync会看到不同的时间戳,检查文件大小(当然,它们是相同的),然后最终做一个校验和标记它们以进行更新之前的文件.如果校验和匹配,即使时间戳不同,也不会更新文件.
我有什么误会?
解决方法
看起来你理解的东西很好,只有一个例外.当您处于–dry-run模式时,rsync不会计算校验和,因此您可能会看到在校验和完成后不会传输的文件.
由于时间戳不同,rsync知道它将被更新,但由于它处于干运行模式,因此无法报告需要更新的唯一内容是时间戳.
I’m using it to monitor failure of synchronization between remote machines… so it’s really just a remote diff.
我不知道如何在干运行模式下强制校验和.
既然听起来你试图强制比较本地和远程的同步文件集,那么你可能想尝试这样的东西吗? (如果你想要更快的速度,可以用sha1或md5替换sha256deep).
diff -u <( /usr/bin/sha256deep -l -z -r -o f path | sort -k 3 ) \ <( ssh remote /usr/bin/sha256deep -l -z -r -o f path | sort -k 3 )`