Unison 和擴展文件屬性
我有兩台機器,一台 Debian,一台 Ubuntu,都在 ext4 上,並在 fstab 中啟用了擴展文件屬性。getfattr 和 setfattr 已在本地安裝並在兩台機器上完美執行。但是,預設情況下,一致(版本 2.40.102)不同步擴展文件屬性。
我四處搜尋,發現這篇部落格文章包含應該啟用擴展屬性同步的配置文件設置。所以,我改變了我的個人資料,現在它看起來像這樣:
root=/path/to/dir root=ssh://user@example.com//path/to/dir2 auto=true batch=true perms=0 rsync=true maxthreads=1 retry=3 confirmbigdeletes=false copythreshold=0 copyprog = rsync -aX --rsh='ssh -p 22' --inplace --compress copyprogrest = rsync -aX --rsh='ssh -p 22' --partial --inplace --compress copyquoterem = true copymax = 1
此配置文件同步新文件的擴展屬性,但是當我更改已同步文件的擴展屬性並執行一致時,我得到:
Nothing to do: replicas have not changed since last sync.
其他一切都完美同步,但一致不知道擴展屬性的變化。我還嘗試禁用快速檢查,希望它可以更詳細地檢查文件;沒用。我嘗試在一個方向上進行 rsync’ing 並且效果很好。但我需要雙向同步,所以我堅持一致。
我瀏覽了官方手冊,但它只是順便提到了擴展文件屬性。所以我的問題是:這可以統一完成嗎?我在這裡錯過了一些簡單的東西嗎?或者,是否有其他開源工具可以實現這一目標?(我知道 bsync 和 bitpocket,但在我的初步測試中,它們也沒有註意到擴展的文件屬性更改)。
萬一有人遇到與我將來相同的問題 - 統一不適用於擴展文件屬性。解決它的一種方法是 copyprog + copythreshold=0 hack(請參閱原始問題中的配置文件),但這並不能解決一致沒有註意到 xattr 變化的問題。正如我在其中一條評論中提到的,即使更改文件的修改時間也不會使修改後的 xattr 同步同步。不僅如此,它甚至會在下次該文件的內容髮生更改時刪除它們。
我可以使用擴展文件屬性進行雙向同步的唯一方法是使用bsync,通過將 -X 標誌添加到 rsync 參數並更改文件的修改時間來更改它。
這遠非理想的解決方案:更改文件的修改時間、不支持 Windows、依賴 Python 3、上次送出是去年等,但這是我發現的唯一可以完成這項工作的軟體。