Unisonは、ディレクトリツリー全体を同期させ、転送するための優れたソリューションです。同期は双方向に実行され、直観的なグラフィカルフロントエンドによって制御できます。コンソールバージョンも使用できます。同期処理を自動化できるため、ユーザとの対話が不要になりますが、使用するには経験が必要です。
Unisonは、クライアントとサーバの両方にインストールする必要があります。ここでサーバとは、2番目のリモートホストを指します(CVSとは異なります。項47.1.2. 「CVS」を参照)。
ここでは、Unisonをsshと共に使用します。この場合、SSHクライアントをクライアントにインストールし、SSHサーバをサーバにインストールする必要があります。
Unisonで採用されているアプローチは、2つのディレクトリ(roots)を互いに関連付けるという方法です。この関連付けはシンボリックです。つまり、オンライン接続があるわけではありません。この例のディレクトリレイアウトは次のとおりです。
クライアント: |
|
サーバ: |
|
それでは、これらの2つのディレクトリを同期させましょう。ユーザは、クライアント上のtuxおよびサーバ上のgeekoとして認識されています。最初に、クライアントサーバ間通信が有効かどうかをテストします。
unison -testserver /home/tux/dir1 ssh://geeko@server//homes/geeko/dir2
最もよくある問題は次のとおりです。
クライアントとサーバで使用されるUnisonのバージョンに互換性がない。
サーバがSHH接続を使用できない。
指定されたパスがどちらも存在しない。
これらに問題がない場合は、オプション-testserverを省略します。最初の同期では、Unisonがまだ2つのディレクトリ間の関係を把握していないため、個々のファイルやディレクトリの転送方向についての提案が表示されます。[]列の矢印は、転送方向を示します。疑問符は、両方のバージョンが変更されている、または両方が新規のため、転送方向についてUnisonが提案を行えないことを示します。
矢印キーを使用して、個々のエントリの転送方向を設定します。表示されているすべてのエントリについて転送方向が適切な場合は、[]をクリックします。
Unisonの特性(たとえば、問題のないケースについて同期を自動実行するかどうか)は、プログラムの開始時にコマンドラインパラメータで指定して制御することができます。すべてのパラメータのリストは、unison --helpコマンドで表示できます。
例 47.1. ファイル ~/.unison/example.prefs
root=/home/tux/dir1 root=ssh://wilber@server//homes/wilber/dir2 batch=true
各ペアについての同期ログが、ユーザディレクトリ~/.unisonに保存されます。~/.unison/example.prefsのような設定セットもこのディレクトリに保存できます。同期を開始するには、このファイルをコマンドラインパラメータとしてunison example.prefsのように指定します。
Unisonの公式マニュアルは、非常に役に立ちます。そのため、ここでは簡単な概要だけを説明しました。 このマニュアルは、http://www.cis.upenn.edu/~bcpierce/unison/とSUSEパッケージunisonに完全版が用意されています。