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

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

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

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

我误解了什么?

答案1

看起来你理解得很好,但有一个例外。当你处于--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 )`

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

相关内容