Resilio Sync的同步机制

发布时间 2023-12-18 11:49:45作者: 笠航

设置好Resilio Sync的同步文件夹之后,可以在多个设备间互相同步。那么同步是如何进行的呢?又是如何处理版本控制和文件冲突的呢?根据官方文档的说明,我整理出了以下内容,希望可以解答上面的疑惑。

.sync文件夹

在Resilio本地同步文件夹中,有一个隐藏文件夹,名为 .sync,里面存储了设备信息、文件信息等,这些文件和文件夹的作用如下:

  • Archive文件夹:存储其他设备中修改或者删除的文件历史版本
  • ID文件:文件夹标识符,通过ID,Resilio可以找到其他同步设备上对应的文件夹
  • IgnoreList文件:标识出哪些文件无需同步,类似Git中的 .gitignore
  • StreamsList文件:数据流文件白名单,Windows下的数据流即alternate streams,Mac/Linux下的数据流为extended attributes(这个不理解也没事)
  • .!sync结尾的文件,表示此时正在同步,同步结束后,文件将被重命名,然后移动到正确的位置

Archive文件夹和版本控制

  • Archive文件夹用于保存文件的历史版本
  • 如果文件在任意节点更新或者删除,则旧版本的文件会移动到其他节点的Archive文件中
  • 默认情况下,电脑端保留30天历史,手机端保留1天历史,时间数值可以修改 Sync Preferences > Advanced > Power user preferences > sync_trash_ttl
  • 也可以设置进行版本控制的文件最大大小,默认为1000,即1000Mb,表示小于1000Mb的文件都会保存历史版本 Sync Preferences > Advanced > Power user preferences > max_file_size_for_versioning
  • 历史版本会在文件名后添加序号,序号越大,表示版本越新,文件的修改时间即为当前版本被移动到 Archive 文件夹的时间
  • Archive功能可以关闭,但是强烈不建议关闭

同步顺序

如果多人对同一个文件进行了操作,Resilio会按照时间顺序同步,最先修改的最先同步,只有设备上线才会进行同步
举两个例子说明:

  • 场景1:假设有3台同步设备,且均在线。设备1在10:00更新了文件,设备2在10:10更新了文件,设备3在10:20更新了文件。

那么,同步会按照时间顺序进行,先同步设备1所做更改,再同步设备2所做更改,最后同步设备3所做更改。

  • 场景2:假设有2台同步设备。设备1为离线状态,在10:00时修改了文件;设备2为在线状态,在10:10修改了文件。

那么当设备1上线后,设备1所做的修改会优先同步。由此,设备2所做的修改会被覆盖,但是被覆盖的文件可以从Archive文件夹中找到。

同步模式

增量同步,只同步更新的部分

参考资料

  • What is '.sync' folder, and StreamsList, IgnoreList and Archive inside? – Sync

https://help.resilio.com/hc/en-us/articles/206217185-What-is-sync-folder-and-StreamsList-IgnoreList-and-Archive-inside-

  • Using Archive for file versioning and restoring deleted files. – Sync

https://help.resilio.com/hc/en-us/articles/204754239-Using-Archive-for-file-versioning-and-restoring-deleted-files-

  • What if several people make changes to the same file? – Sync

https://help.resilio.com/hc/en-us/articles/204754209-What-if-several-people-make-changes-to-the-same-file-

  • When a file changes, does Resilio Sync transfer the entire file again, or just the part that's changed? – Sync

https://help.resilio.com/hc/en-us/articles/206217095-When-a-file-changes-does-Resilio-Sync-transfer-the-entire-file-again-or-just-the-part-that-s-changed-