UnizonでPC間同期

 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よりは安く、しかも自由度が高い環境が構築できたので良し。

「UnizonでPC間同期」への2件のフィードバック

  1. 最近DBばっかやっているので、
    自分のメモとか書きものとか簡単なクリップなんかは
    全部DBに置いてます。
    で、レプリケート。夜間とか暇なときもネット経由でレプリケート。
    世代管理できるし結構便利。
    ただ、普通にWindows使うってのには向かないかも。
    デスクトップに適当においておくとかできないし。(対象外)

  2.  WebDAV+Subversionがもう少しこなれてきたら手を出そうかと思ってます(と思いつつ、だいぶたつなぁ)。
     メインのノートをTabletPCにしたし、メモ的なものはOneNoteに集約していくことになりそう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)