ファイルサーバとローカル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を使ってポートフォワーディングを参考にputtyでGateway 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
次にputtyのplinkを使って、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.12. I can use plink directly to invoke unison on the linux side.
c:\> plink fdb@... unison -version
unison version 2.17.13. 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
とうちこんで、デバッグ情報をだすこと。
オプションについては、以下のサイトを見て調整すること。