2つのマシン間での同期作業
2つの異なるマシンを対象とする場合、Unisonによる同期には複数の方式が存在している。そのうち一番簡単なものは、SSH接続を利用する方式である。自分の環境でUnisonによるSSH接続が利用できるかどうかを確認するには、「ssh 192.168.0.198 unison -version」といった構文のコマンドを実行してみればいい(IPアドレスについては、Unisonをインストールした相手先のリモートマシンのアドレスに置き換える)。その後、接続先マシンのパスワードを入力して、Unisonのバージョンが表示されれば問題ない。異なるユーザとしてログインする場合は、「ssh someotheruser@192.168.0.198 unison -version」といった構文のコマンドを使用する必要がある。
SSH接続が利用できる場合は、「unison original ssh://192.168.0.198//home/fkereki/original」(スラッシュ記号が2つ入る部分「//」に注意)といった構文のコマンドでファイルの同期が行える。リモートマシンには別ユーザとしてログインする場合は、先と同様に「unison original ssh://someotheruser@192.168.0.198//home/fkereki/original」などと指定すればいい。
ソケット接続を介した同期も簡単に実行できるが、この方式はセキュリティ的には劣っているので、パブリックネットワークでの使用は控えるべきである。またこの場合は、リモートマシン側のUnisonをサーバモードで実行させるための設定が必要になる。ただしサーバモード下のUnisonは1度に1つのクライアントしか対応できないので、仮に2人のユーザが同時にファイル同期を行う場合は、他方の処理が終わるまで一方は待機しなければならない。その他にもUnisonによる処理はこのプログラムを起動させたユーザのアクセス権限を用いて実行されるので、各自の所有するアクセス権限の異なる複数のユーザが同一サーバに対して同期を行う際には、SSH接続を使用しなければならない。
ソケット接続方式を利用する場合は、“サーバ”側のマシンで「unison -socket 12345」という構文のコマンドを実行して、Unisonを接続待機状態に置いておく。その際に“&”をコマンド末尾に追加しておくと、Unisonはバックグラウンドで実行されるようになる。なおここで「-socket」の次に指定した12345は任意指定のポート番号であり、10000から40000の間で適当なものを選択すればたいていは大丈夫なはずだ(一部の番号には使用制限があり、何を使用できるかについては資料を別途参照して頂きたい)。リモートマシン側でのUnisonの起動後にファイルの同期を行うには、「unison original socket://192.168.0.198:12345/home/fkereki/original」といった構文のコマンドを使用すればよく、この指定例の場合は先のSSH接続方式での実行時と同じ結果が得られるはずである。
より高度な使用法
Unisonには様々な処理用のオプションが用意されている。例えば、同一設定での処理を繰り返し実行するタイプのユーザであれば、そうした設定をプロファイルに登録しておき(各種設定を指定フォーマットで記述したファイルを.unisonディレクトリに格納しておく)、「unison yourprofile 」というコマンドを実行すると、すべての設定を一括で適用させることができる。プロファイルの詳細についてはオンラインドキュメントが用意されているので、そちらを参照して頂きたい。
基本的にUnisonで想定されているのは1組のマシン間での同期処理であるので、同期対象とするマシンが3つ以上存在している場合は、運用側の手順でカバーする必要がある。そうした場合の具体的な処理法としては、1つのマシンを“スター型トポロジ”のセンタ(あるいはハブ)として運用し、これを基準にして残りのマシン群との同期を行わせるという方法が考えられる。後者のマシン間での直接的な同期を必要としない限り、この方式でうまく行くはずだ。
まとめ
Unisonは、簡易的なファイルの同期作業をするための有用なツールとして機能するが、ファイル同期に使用するサーバが複数存在する場合は“同一バージョン間のみ対応”という制限が足かせになるかもしれない。またこのソフトウェアについては非常に動作が安定している点も高く評価すべきであり、それを裏付けているのが、安定版のリリースが比較的高いバージョン番号で行われていることおよび、開発陣が現在も使用し続けているためアップデートが継続されていることの2点である。私の場合、操作性に優れた実用的ツールとして、今後も日常的にUnisonを使用していくことになるだろう。
Federico Kerekiはウルグアイ出身のシステムエンジニアで、20年以上に渡るシステム開発、コンサルティング、大学講師の経験を有している。
