unisonで自動sync

一昨日、sshfsの設定を考えた時に、 unisonはどうかという感じになったので、 unisonが使えるかを調べた。

まず、アクセス先の制限なんだけど、 rsyncみたいに、コピー先が引数に渡ってるわけではなく、 たぶん、標準入出力を経由してわたってる。 なので、sshfsの時のようにchrootしないといけない。 が、こっちはsshdに内蔵された版がある訳ではないので、 ダイナミックリンクしてるのも含めてchrootに入れないといけない。 ちょっと大変そう。

普段は隔週でunisonを手実行してるんだけど、 自動化で実行したい、 crontabに書いてもいいんだけど、 unisonにはファイルシステムの変更を監視して、 同期するオプション(-repeat watch)があったので、 これを試してみたが、 debianパッケージのunisonはこのオプションが有効にされていなかった。

他の手段として、n秒おきにチェックする事もできるらしい。(-repeat 10)

しかし、手元の環境では普段のデータを交換しようとしたらサーバー側が固まってしまい動作しなかった。

どうも。-repeat 10をつけている場合、 手元では10秒おきにチェックだが、 サーバー側ではファイルシステムの監視が行われているようだ。

このプロセスをstraceしてみたところ、 リソース不足エラーが発生していた。

たぶん、ファイル数が多すぎると、監視しきれないのだと思う。

一旦空のディレクトリを同期してみたところ、問題なく同期できた。

まあ、sshfsのままでいいや、という感じ。