rsync 标记与时间戳完全相同的文件

dlo*_*dlo 3 rsync

当我这样做时rsync --dry-run -rv,rsync 会列出除时间戳之外完全相同的文件。

我的理解是,仅使用这些标志(它们并没有真正改变比较行为),rsync 会看到不同的时间戳,检查文件大小(当然,它们是相同的),然后最后对文件,然后将它们标记为更新。如果校验和匹配,即使时间戳不同,文件也不会更新。

我有什么误解?

Zor*_*che 5

除了一个例外,你似乎对事情理解得很好。当您处于--dry-runrsync 模式时,不会计算校验和,因此您可能会看到校验和完成后不会传输的文件。

因为时间戳不同,rsync 知道它会被更新,但由于它处于试运行模式,它无法报告唯一需要更新的是时间戳。

我用它来监控远程机器之间的同步失败......所以它实际上只是一个远程差异。

我不知道如何在试运行模式下强制校验和。

既然听起来您正在尝试强制比较本地和远程同步文件集,那么您可能想尝试这样的事情?(如果你想要更快的速度,sha256deep可以用 sha1 或 md5 deep 替换)。

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 )`
Run Code Online (Sandbox Code Playgroud)

该命令将在本地和远程计算每个文件的 md5 校验和。这两个列表按路径排序,diff 将显示校验和中的差异。