私はいくつかのデバイスを持っており、それらを nison と同期させることを検討しています。
デバイスは常に稼働しているわけではなく、1日数時間、必ずしも同時にオフになっているわけではありません。どのデバイスも24時間稼働していません。したがって、実際のピアツーピアが必要です。たとえば、変更(*
としてマークされている)がAからB、Cにどのように伝播するかを確認します。 、Dすべての同期中に何も実行されていなくても:
A-on* B-on C-off D-off
A-on* B-on* C-off D-off
A-off* B-on* C-off D-off
A-off* B-on* C-on D-off
A-off* B-on* C-on* D-off
A-off* B-off* C-on* D-off
A-off* B-off* C-on* D-on
A-off* B-off* C-on* D-on*
残念ながら、Unison ユーザーマニュアル は、2台以上のマシンにスタートポロジを推奨しています。
ユニゾンを使用して複数のマシンを同期する
Unisonは、レプリカのペアを同期するために設計されています。ただし、これを使用して、複数のペアワイズ同期を実行することにより、マシンのより大きなグループの同期を維持することができます。これを行う必要がある場合、設定する最も信頼できる方法は、マシンを「スタートポロジ」に編成し、1台のマシンを次のように指定することです。 「ハブ」と残りは「スポーク」として、各スポークマシンはハブとのみ同期します。スタートポロジの大きな利点は、別のアーカイブがユニゾンによって維持されているという事実から生じる「偽の競合」を混乱させる可能性を排除することです。同期するホストのすべてのペア。
それにもかかわらず、Unisonで実際のピアツーピアを実現する方法はありますか?
私は常にスタートポロジでUnisonを使用して、4台のマシンを同期してきました。これは、バージョン管理ファイルシステム(たとえばgitなど)ではなく、同期ツールであるためです。
分散トポロジ(デバイスごとに構成ファイルを作成してすべてを同期することで設定する必要があります)を選択した場合、間違いなく大量の手動の競合解決を行うことになり、これは厳しいものになります。これは、システム上のファイルに非常に基本的な変更を加え、一度に1つのデバイスにのみ加えない限り、確かに当てはまります。
だから、提案:
ユニゾンは本質的にピアツーピアです。これがまさにスタートポロジが推奨される理由です。ツールには中央サーバーの概念がないため、中央サーバーを強制するのはユーザーの責任です。
確かにユニゾンをピアツーピアで使用できますが、奇跡はありません。マシンのペア(A、B)ごとに、マシンの1つ(たとえばA)を選択し、Bと同期するためのプロファイルを作成する必要があります。したがって、マシンがn台ある場合は、n *(n-1)/ 2個のプロファイルが必要になります。
多くのプロファイルが必要になることに加えて、競合する変更が発生する可能性があります。これは、要件に内在する問題です。特に、ネットワークがパーティション化される可能性があります。最終的にD1 = D2≠D3 = D4になると、{D1、D2}と{D3、D4}の間に競合が発生します。 D1をD3と同期することによってその競合を調整すると、D1とD3に新しいバージョンが作成され、D2とD4に異なる古いバージョンが作成されます。混乱が広がる傾向があります。
本当に純粋にピアツーピアで行きたいのであれば、履歴を維持し、gitなどのマージに優れたツールを使用することをお勧めします。そこにさえ、信頼できる最新バージョンがある場所を提供するので、スタートポロジ(つまり中央リポジトリ)が最適です。ただし、中央リポジトリがないため、履歴で競合が発生しやすい場合は、少なくともgitを使用すると、マージ履歴を記録するための優れたツールが提供されるため、競合している部分を確認できます(これは、競合を解決しようとしています)。