[メモ] ファイル同期ソフトUnison

ファイルサーバとローカルPCをゲートウェイサーバ経由でファイル同期する際のメモ。

FileServer <-> Gateway <-> LocalPC

基本方針は、ゲートウェイサーバまでSSHで接続、そこからポートフォワードで同じくSSHで接続する。そして、Unisonでファイル同期を行う。Unisonの説明は、ハチハチイチナナイチ - Unisonマニュアル私的日本語訳を参照のこと。

FileServer側の準備をする。Unison File Synchronizerから、Subversionの最新版をダウンロードする。

FileServerのOSは、Solaris 8。
まず、OCamlをインストール。The Caml language: Homeからダウンロード。

% gzip -cd ocaml-3.09.3.tar.gz | tar xvf -
% cd ocaml-3.09.3
% ./configure
% make 
% sudo make install
% svn checkout https://svn.cis.upenn.edu/svnroot/unison/trunk unison
% cd unison
% make UISTYLE=text

あとは、同期用のディレクトリを作る

% cd ~/
% mkdir Unison

これでサーバの準備おしまい。

ローカルPCの準備。puttyを入れる。Puttyを使ってポートフォワーディングを参考にputtyGateway Sever経由でFileServerにSSHでアクセスできるようにする。今回は、LocalPC <-> GatewayServerをポート22で接続し、10022ポートを空けておく。LocalPC <-> FileServerは、10022で接続する。

次にUnisonのWindowsバイナリバージョンをダウンロードする。Unison File Synchronizerのサイトから、Windows Binaryの最新版のGTKバージョンとtextバージョンにダウンロードする。GTKバージョンを使いたいならば、GTKをインストールする必要がある。http://gladewin32.sourceforge.net/modules/news/ Glade/GTK+ for WindowsからGTK+をダウンロードし、インストールする。

次にWindows環境変数を設定する。マイコンピュータ -> プロパティ -> 詳細設定 -> 環境変数で変更する。UNISONは、unisonの設定ファイルを置く場所を指定。UNISONLOCALHOSTNAMEは、LocalPCのホスト名(適当でよい)。

UNISON  C:\.unison
UNISONLOCALHOSTNAME  Hogehoge

C:\.unisonの下にssh.prfを設定する。rootで同期するディレクトリを指定。sshcmdでsshプログラムを指定。servercmdで、FileServerにインストールされているunisonのフルパスを指定する。今回はSSH経由で、FileServerにアクセスするので、片方のrootをssh://ユーザ名@ホスト名/同期ディレクトリのパスを指定する。

root=C:\Unison
root=ssh://next49@localhost/Unison
sshcmd=C:\.unison\synch.bat
servercmd=/usr/local/bin/unison

次にputtyplinkを使って、FileServerにアクセスするためのバッチファイルを書く。Unison user MLの記事を真似した。

@plink localhost -P 10022 -l next49 -ssh unison -server -server unison -server contactquietly

ここまで設定したら、うまくいくはずなのでこの記事のとおり順番に動作確認する。コマンドプロンプトから、テキスト版unisonを使って確認する。

1. On the windows machine, unison is installed and on the path.

c:\> unison -version
unison version 2.17.1

2. I can use plink directly to invoke unison on the linux side.

c:\> plink fdb@... unison -version
unison version 2.17.1

3. unison on windows seems happy enough to use plink to talk to unison on
the linux machine.

c:\> unison -sshcmd plink -version ssh://fdb@leigh.ucon.org
unison version 2.17.1

なお、plink経由で接続する際にはpagentをたちあげておくとパスフレーズの入力が省略できて便利(だから、plinkの-iオプションが不要)。

以上がうまくいったらコマンドプロンプトで以下のコマンドを打ち込む

unison-2.24.6-win-text.exe ssh

もし、うまくいかなかったら

unison-2.24.6-win-text.exe ssh -debug all

とうちこんで、デバッグ情報をだすこと。

オプションについては、以下のサイトを見て調整すること。