メモを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 = truepath = 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が使えるようになりますのが,日本語ファイル名を使ったりしていると落ちることがあったので,ちょっと注意が必要なようです.(ファイル名が英語だけなら,進行状況をグラフィカルに確認できるので,なかなかよいです.)
参考リンク