私は複数のクライアント間でファイルを同期するためにUnisonを使用しています。各クライアントは同じです。つまり、あるクライアントがファイルを更新するたびに、他のすべてのクライアントもそれを更新する必要があります。
ファイルは集中型クラウドサーバーに保存されます。各クライアントは、ルートではなくSSHを介して集中型クラウドサーバーにアクセスできます。クライアント間にリンクはありません。
ファイルの所有権を維持することが重要です。このため、私は--rsync-path="rsync --fake-super"
以下を使用します。これにより、拡張ファイル属性に所有者/グループが保存されるため、後続の同期中にクライアントから所有権を復元できます。しかし、所有権を維持するより良い方法がある場合は、お知らせください。これにより、以下の問題が解決する可能性があります。
構成の関連部分は次のとおりです。
copythreshold = 0
copyprog = /usr/bin/rsync -avzX --rsync-path="rsync --fake-super" --inplace -e ssh
copyprogrest = /usr/bin/rsync -avzX --rsync-path="rsync --fake-super" --inplace --partial -e ssh
私は次のような行動を観察しました。
ファイルがあるとき作られた
copyprog
、ファイル転送用にrsyncで設定されています。user.rsync.%stat
これで、新しく作成されたファイルにクラウドサーバーにプロパティセット(所有者/グループを含む)があるので、これは非常に良いです。他のクライアントの継続的な同期は所有権を維持します。しかし、ファイル修正する
copyprog
、で構成されたrsyncを使用しません。私はUnisonがカスタムビルトイントランスポートロジックを実行すると信じています。user.rsync.%stat
これでクラウドサーバーで属性が失われるので、これは悪いことです。今、他のクライアントの継続的な同期は所有権を失います。
copyprog
アップデートで常に使用されるようにUnisonを設定できますか?文書には以下が記載されています。
copythreshold が 0 に設定されている場合、Unison はすべてのジョブに外部コピーユーティリティを使用します。フルファイル移動する。
残念ながら、更新についての言及はありません。