設置好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