Resilio Sync的同步机制
设置好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
- Using Archive for file versioning and restoring deleted files. – Sync
- What if several people make changes to the same file? – Sync
- When a file changes, does Resilio Sync transfer the entire file again, or just the part that's changed? – Sync