–checksum和–ignore-times选项之间的Rsync差异

前端之家收集整理的这篇文章主要介绍了–checksum和–ignore-times选项之间的Rsync差异前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
任何人都可以澄清rsync的–checksum和–ignore-times选项之间的区别吗?

我的理解如下:

–checksum
如果文件大小和时间匹配,它将在两端执行校验和以查看文件是否真的相同.

– 忽略倍
无论两端的文件时间是否相同,都“传输”每个文件.由于它仍将使用增量传输算法,如果文件实际上相同,则不会传输任何内容.

这是技术上的差异,但就我所知,它们在语义上是相同的.

所以,我想知道的是:

>这两个选项之间的实际区别是什么?
>在什么情况下你会使用一个而不是另一个?
>他们之间有任何性能差异吗?

解决方法

通常,当源文件和目标端的文件大小和时间相同时,rsync会跳过文件.这是一种启发式方法,通常是一个好主意,因为它可以防止rsync检查在源端和目标端非常可能相同的文件内容.

–ignore-times告诉rsync关闭文件时间和大小的启发式,从而无条件地将所有文件从源传输到目标.然后,rsync将继续读取源端的每个文件,因为它需要使用其delta传输算法,或者只是完整地发送每个文件,具体取决于是否指定了–whole-file选项.

–checksum还修改文件时间和大小的启发式,但在这里它忽略了时间并仅检查大小.传输源大小和目标端的文件大小不同,因为它们明显不同.具有相同大小的文件是校验和(在rsync版本3.0.0中使用MD5,或在早期版本中使用MD4),并且还会传输具有不同总和的文件.

如果源端和目标端大部分相同,则–checksum将导致大多数文件在两端进行校验和.这可能需要很长时间,但结果是最小的数据实际上将通过线路传输,特别是如果使用增量传输算法.当然,如果您的网络速度非常慢,而且cpu速度非常快,那么这只是一场胜利.

另一方面,–ignore-times将通过网络发送更多数据,并且它将导致所有源文件被读取,但至少它不会增加在源上计算许多加密强哈希值的额外负担和目标cpu.当网络速度很快和/或cpu相对较慢时,我希望此选项的性能优于–checksum.

我想我只会使用–checksum或–ignore-times,如果我将文件传输到目的地,在那里怀疑某些文件内容已损坏,但修改时间没有改变.虽然可能还有其他用例,但我真的不能想到使用任何一个选项的任何其他好理由.

猜你在找的Linux相关文章