ひとまず、howmで取ったメモをSubversionを使ってバックアップをとるようにしました。こちらは家ではMac, 外出先ではN810というLinuxベースのMIDを使用しています。家でメモを取ったり、外出先でメモを取ったりしていると、どうしても同期漏れをさせてしまいます。
これまではrsyncを使って同期をさせていましたが、同時に同じファイル名で編集してしまうと新しいタイムスタンプのファイルで同期されます。結果、古いタイムスタンプのファイルがなくなってしまうため、折角のメモが
消失してしまうことがありました。そこで、今回の対応に行いました。
構築した環境としては以下のとおり。
[img_assist|nid=35|title=howmをsvnで同期する|desc=|link=node|align=left|width=320|height=111]
玄箱にSubversionのリポジトリを置き、それをMac/N810からアクセスすることにより同期忘れによるメモの消失を防ぐことができます。
==Subversionのインストール==
MacOS(Leopard)には標準でSubversion(svn)がインストールされているので、何もしなくて良い。玄箱とN810については、aptを使用してインストールしました。
==環境構築に関する注意==
こちらの環境では、SambaおよびWebDAVによるリポジトリへのアクセスができなかったため、svnのプロトコル(スキーマが「svn://」または「svn+ssh://」)を使用しました。
==sshのインストール・設定==
Subversionサーバとして動作するプログラムは”svnserve”である。今回sshを使用してセキュリティ強化を図るとともに、sshデーモンから起動するように設定しました。
===玄箱にsubversionサーバ用のアカウントを作成===
$ useradd -m
===sshサーバの設定変更===
# vi /etc/ssh/sshd_config
“AllowUsers”にSubversionサーバ用に追加したアカウント名を追記しました。
AllowUsers
===キーの生成===
Mac, N810, 玄箱から使用するユーザアカウントにて以下のコマンドを入力します。
$ ssh-keygen -b 1024 -t dsa -N <パスフレーズ>
これにより”id_dsa”, “id_dsa.pub”ができあがります。ちなみに前者が秘密鍵、後者が公開鍵となります。
===公開鍵の交換===
Mac, N810にて作成した”id_dsa.pub”を以下のようにコピーします。
$ cd ~/.ssh
$ Mac, N810のid_dsa.pubを/tmp/にコピー
$ cat /tmp/id_dsa.pub >> authorized_keys
同様に玄箱のid_dsa.pubをMac, N810にauthorized_keysとして保存します。
===Subversionサーバのauthorized_keysの修正===
sshにてアクセスしたらsvnseerveを起動させるため、以下のとおり修正します。
【元】
ssh-dss AAA…== <ユーザアカウント>@<ホスト名(Mac)>
ssh-dss AAA…== <ユーザアカウント>@<ホスト名(N810)>
【変更後】
command=”svnserve -t –tunnel-user= -r <リポジトリルート>” ssh-dss AAA…== <ユーザアカウント>@<ホスト名(Mac)>
command=”svnserve -t –tunnel-user= -r <リポジトリルート>” ssh-dss AAA…== <ユーザアカウント>@<ホスト名(N810)>
==howmのリポジトリの作成・設定==
Subversionサーバにログインし、以下のコマンドを入力します。
$ cd <リポジトリのルート>
$ svnadmin create howm
これにより、howm/confディレクトリ以下に設定ファイルができあがるので、Mac, N810がアクセスできるように修正します。
===svnserve.conf===
[general]
authz-db = authz
# authz-db = authz が”#”によりコメントアウトされているので、このコメントを削除します。
===authz===
[groups]
deloppers =
[/]
@deloppers = rw
==howmデータのSubversionへの登録(import)==
$ svn import ~/howm svn+ssh://@<ホスト名>/howm -m ‘’
sshを使用してのアクセスとなり、Subversionサーバへのアクセス時にパスワードが求められることがあります。正しいパスワードを入力すると、インポートが正しく行えるはずです。インポートができない場合は各設定を確認しましょう。
==howmデータのチェックアウト==
N810, Macに対して、それぞれチェックアウトを実施します。
$ cd ~
$ mv howm howm.orig # ひとまず退避
$ svn co svn+ssh://svn+ssh://@<ホスト名>/howm
==日々の同期==
32nd Diary(2006-12-13)
[http://taka.no32.tk/diary/20061213.html]
に書かれているシェルスクリプトを使用します。ただ、こちらはimcapでキャプチャした画像も含むため、”svn stat”する行に以下のコマンドを追加しています。
svn stat | sed -ne ’s/^¥?¥W*¥(.*¥.jpg¥)$/¥1/p’ | xargs -r svn add
注意事項としては、Macに入っているxargsと、aptによりN810にインストールされるxargsでは若干挙動が異なるので注意が必要。
Macのxargsはオプションをつけなくても、xargsへの入力がない場合は、xargs以降のコマンドを実行しない。
Linux(gnu)のxargsは”-r”をつけなければ、xargsの入力がなくてもxargs以降のコマンドを実行します。
==howmの設定変更==
デフォルトの設定では、「¥C-c,,」した場合、.svnディレクトリ以下も検索・表示していたため、.emacs.elに以下を追加
(setq howm-view-use-grep t)
(setq howm-view-grep-command “grep”)
(setq howm-view-grep-extended-option ”–include=*.howm”)
※(setq howm-view-grep-extended-option ”–include=*.howm”)のかわりに(setq howm-view-grep-option ”–include=*.howm”)を記述してみたが、こちらの環境ではうまく動作しなかったので断念。
==sshのパスワードを毎回聞かれたくない場合==
$ ssh-agent bash
$ ssh-add
により、パスワードを聞かれるので、正しいパスワードを入力します。成功することにより、ssh-agentが動作している間はパスワード入力は必要ありません。