qrsync 是根据什么来判断文件是否有修改的?

发布于 2022-08-30 01:01:34 字数 76 浏览 16 评论 0

有一批需要同步的文件 每次重新生成后即使文件内容没变、文件名没变也会被同步,难道 qrsync 判断是否有变化跟文件创建时间还有关系?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七禾 2022-09-06 01:01:34

qrsync是在rsync基础上进行的封装,所以算法也是基于rsync

对于rsync,同步过程如下

  • 建立网络链路并校验权限
  • 发送方传输本地文件列表,包括目录结构文件名、每个文件的修改时间大小
    • 如果指定-c, --checksum参数,则会包含每个文件的checksum(一种hash)
    • 如果指定-p, --perms参数,则会包含每个文件的owner,group以及权限
  • 接收方一一对比,如过存在某项属性有和本地文件有差异的,则放入传输列表
  • 针对需要传输的文件列表,采用rsync算法计算出文件中差异的部分,进行尽可能最小化的传输

因此默认情况下,判断一个文件是否需要传输,是基于修改时间文件大小,如果二者都一样,则会直接跳过这个文件。这样的算法,虽然简单粗暴,但是对I/O及CPU的消耗微乎其微,也基本上能适应大部分场景。这样的算法会忽略那些通过非正常手段修改了文件内容,但是时间戳和文件大小都没有变化的文件,因此rsync提供-c参数进行更严格的对比。

针对题主的情况,可以加上--size-only参数,这样的话,针对同一个文件(路径),如果文件大小保持一致,只是修改时间不同,也会直接跳过,不进行传输。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文