メモをUnisonで同期

howmというメモ書きツールを使っているのですが,書きためたメモをデスクトップとノートで,同期したいというありがちなことを試してみました.同期ツールには,rsyncより細かい同期ができるUnisonを試してみました.(ダウンロードは,このあたりから.)

Unisonがrsyncより優れているところは,

  • 同期対象とするファイル,条件を詳細に指定することができる.
  • 同期時のファイル操作を確認してから実行することができる.
  • コンフリクトした場合,マージするためのコマンドを実行することができる.

といったあたりです.

今回は,WindowsのノートPCとLinuxデスクトップの間でのメモの同期が目標です.Unisonのコマンドの起動は,Windows側で行います.

Linuxにsambaを入れて,Windowsファイル共有で指定するのが楽なのですが,FWを越える必要がある場合もありますので,常にWindowsのファイル共有が使えるわけではなく、ssh経由で同期するようにします。ssh経由の場合,サーバ側にもunisonをインストールする必要があります.

使っている設定ファイル(howm.prf)は,こうです.

root = d:\data\
root = ssh://192.168.0.1/home/user/data/memo
sshcmd = plink.bat
fastcheck = true

path = memo

ignore = Name *~
ignore = Name .*~
ignore = Name *.o
ignore = Name *.tmp
ignore = Name Thumbs.db
ignore = Name .DS_Store

fastcheckをtrueとするとファイル全体を比較するのではなく,タイムスタンプなどで比較することで,差分チェックがかなり高速になります.ファイル数が増えてくると,これ無しでは,ちょっとつらくなります.実は,Windowsでは,ファイルの内容が変化したことを確実にチェックするには,fastcheckはfalseである必要があるのですが,実用上は,trueにしていても問題なさそうです.
sshcmdに指定したplink.batはこんなところです.plinkのラッパーとして使っています.このラッパーにサーバのホスト名を書いてしまっていますので,上の設定ファイルでのホスト名の指定は無意味だったりします.

@plink 192.168.0.1 -l user -i id_rsa.ppk -ssh unison -server unison -server -contactquietly

ここで,コマンドラインで「unison -batch howm」とすると一発で同期が完了します.

ちなみに,GTKがあるとGUIが使えるようになりますのが,日本語ファイル名を使ったりしていると落ちることがあったので,ちょっと注意が必要なようです.(ファイル名が英語だけなら,進行状況をグラフィカルに確認できるので,なかなかよいです.)

参考リンク