UnizonでPC間同期

Pocket

 M200はHDD容量に余裕あるし、デスクトップに匹敵する作業環境が構築するので、自宅の仕事用マシンとのデータ同期をもう少しまじめに考えてみることに。
 そこではたと困ったのは、世の中にバックアップ・同期ソフトは数あれど、双方向のシンクロに対応したものは驚くほど少ない。たいていはどちらかをメインにして、メイン側の更新をサブ側に反映させることしかできない。サブ側での変更がメインに適用されないのだ。かのrsyncですら難しいようだ。単なる片方向の同期では、例えばサブ側でいらなくなったファイルを消去した場合、次の同期時にメイン側から消したファイルが補填されてしまう。これを防止するには、静的にファイルの状態を比較するのではなく、常にファイルの更新内容のログをとっておき、ファイル削除のタイミングが前回の同期よりも後であれば、他方でも同じファイルを削除する、という処理をしなければならない訳だ。
 で、まず見つけたのはAccuSync。機能的にはヨサゲだけど、もともとrsyncでなんとかしようと思っていただけに、\7,000超の出費はちょっと。ヨドバシ店頭で悩んだ挙げ句、買わずに帰宅。
 もう少しネットを漁ってみると、UnizonというGPLなツールがあるでないの。ここにも紹介されている通り、
・双方向同期ができる
・Linux(UNIX)とWindows版がある。
・SSH経由で使える
などの特徴がある。イイヨイイヨ!
 早速セッティング。双方でunizonを起動すれば直接ソケット通信でやりとりもできるらしい。LAN内なのでそれでもいいかと思ったが、やはり片方の操作だけで簡潔したいので、デスクトップ側にsshdを上げて、unizonはそこから自動起動するようにしよう。これが結構苦戦。色々試行錯誤をして数時間かかったんだけど、結果としてやったことだけ。
・デスクトップ側にCygwinを入れてsshdをサービス登録。
・ノート側にはPuTTYに付属のsshクライアントPlinkを入れる。
・もちろん双方にunizonのCUI版をインストール
・上の解説サイトで紹介されているバッチを導入
 Cygwinのsshdをサービスとして動かすのがやたら大変だった。だいぶ昔に入れたのをアップデートして使ったのがマズかったらしく、クリーンインストールしたらOKでした。
 unizonは基本的に1ペアの同期設定しかできないので、上記バッチをペア数だけ増やすのは効率悪い。そこでバッチが最終的にはき出すコマンドラインをパチって、自分でバッチを書く(DOSのバッチなんて何年ぶりだろう…)。サブフォルダを無視するとか特定のファイルのみ対象にする、というオプションがないらしく、逆に全部除外して、そこから特定のファイルを逆除外する、みたいなオプションを書かなければならなくて、正規表現でハマるも、なんとかテンプレートが完成。基本的にはこのバッチにコマンドラインを書き加えていけば、順次同期が実行されます。もちろんDOSバッチなので、普通にエクスプローラやランチャーから1発起動可能な点も、Cygwin上でrsyncなりを使うよりも快適。
 これでHDDのあちこちに分散している色々なアプリケーションの設定をサクっと同期できる環境が整いました。Operaや地図ソフトのブックマーク然り、やよいの青色申告然り。確定申告作業がモバイルでできるのはウレシイかも。
 Cygwinの解説本を買ってしまったので完全無料ではなかったけれど、Accusyncよりは安く、しかも自由度が高い環境が構築できたので良し。