当我做rsync --dry-run -rv ,rsync会列出除时间戳以外相同的文件。
我的理解是,只有这些标志(其实并没有改变比较行为),rsync会看到不同的时间戳,检查文件大小(当然是相同的),然后最后做一个校验和文件,在标记它们进行更新之前。 如果校验和匹配,即使时间戳不同,文件也不会被更新。
我误解了什么?
除了一个例外,你似乎很了解事情。 当您处于--dry-run模式时,rsync不会计算校验和,因此您可能会看到校验和完成后不会传输的文件。
因为时间戳是不同的rsync知道它会被更新,但由于它处于干运行模式,它将无法报告唯一需要更新的是时间戳。
我用它来监视远程机器之间的同步失败…所以它只是一个远程差异。
我不知道如何在干运行模式下强制校验和。
既然听起来像是在试图强制对本地和远程的同步文件进行比较,那么你可能想尝试这样的事情呢? (如果你想要更快的速度, sha256deep可以用sha1或者md5深度代替)。
diff -u <( /usr/bin/sha256deep -l -z -r -of path | sort -k 3 ) \ <( ssh remote /usr/bin/sha256deep -l -z -r -of path | sort -k 3 )`
该命令将为本地和远程的每个文件计算md5校验和。 这两个列表在path上sorting,差异会显示你和校验和的差异。