そんなこんなで困っていたところ、それを解決出来そうなunisonというアプリがあることを知ったので、インストールして試してみることにしました。
で、ローカルでテストしてみたところまさに理想の挙動をしたので早速採用することにしました。
ちなみにUnisonの特徴は以下の通り
使っていたディストリビューションにはcoamlのパッケージが無かったためここから「ocaml-3.05-1.src.rpm」をダウンロードしてrpmbuildしてインストール。
その後unisonをmakeしてみたところ、今度は無事makeに成功( ̄▽ ̄)ノ
で、折角なんでcheckinstallでrpmにして入れようかと思ったら、なんか循環エラーが出るため、断念して、出来上がったunisonの実行ファイルだけシステムディレクトリに移動してインストール終了としました。
で、早速使ってみる事にします。
今回はサーバ側がLinuxでクライアント側がWindowsのcygwin環境です。
まず、これまでcygwin上で
となっていたシェルスクリプトを以下のように修正rsync -auvz -e ssh --delete user@hoge.foo.bar:/home/user/datadir/ /cygdrive/c/datadir/ rsync -auvz -e ssh /cygdrive/c/NewDatafile/ user@hoge.foo.bar:/home/user/datadir/ mv /cygdrive/c/NewDatafile/ /cygdrive/c/datadir/
して実行してみると、見事に同期しました。( ̄▽ ̄)ノunison /cygdrive/c/datadir/ ssh://user@hoge.foo.bar/datadir -batch -prefer older<\pre>
で次のテスト
これまでは自動削除の為に、cygwin側で新しく作ったファイルは一度「c:\NewDatafile」というディレクトリにおいて、同期してからデータディレクトリに移動してましたが、これだと同期前と同期後でファイルの場所が異なってしまい、ソフトなどの履歴機能が使いにくい状況でしたが、unisonを使えば解決出来るはずです。
そこで、早速ゴミファイルを同期させてから、クライアント側で削除してから再び同期してみました。
すると、見事にクライアント側でもサーバ側でもゴミファイルが削除されました(≧▽≦)ノ
CUIな辺りも正直バッチでしょっちゅう流すものがGUIっていうのはイヤだったのでありがたいですしssh使って暗号化も出来、セキュリティも安心なのでunisonとは長いつきあいになりそうです(笑)
参考URL: