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

–checksum和–ignore-times选项之间的Rsync差异,第1张

概述任何人都可以澄清rsync的–checksum和–ignore-times选项之间的区别吗? 我的理解如下: –checksum 如果文件大小和时间匹配,它将在两端执行校验和以查看文件是否真的相同. – 忽略倍 无论两端的文件时间是否相同,都“传输”每个文件.由于它仍将使用增量传输算法,如果文件实际上相同,则不会传输任何内容. 这是技术上的差异,但就我所知,它们在语义上是相同的. 所以,我想知道的 任何人都可以澄清rsync的–checksum和–ignore-times选项之间的区别吗?

我的理解如下:

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

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

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

所以,我想知道的是:

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

@R_403_6120@ 通常,当源文件和目标端的文件大小和时间相同时,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,如果我将文件传输到目的地,在那里怀疑某些文件的内容已损坏,但修改时间没有改变.虽然可能还有其他用例,但我真的不能想到使用任何一个选项的任何其他好理由.

总结

以上是内存溢出为你收集整理的–checksum和–ignore-times选项之间的Rsync差异全部内容,希望文章能够帮你解决–checksum和–ignore-times选项之间的Rsync差异所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1045627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存