これまでzfsボリュームのリモートバックアップは 自作スクリプトでやっていたが、処理対象ホスト増やす時の確認作業が多くて 汎用化しないとなあと思っていた。 しばらく前、FreeBSD/ports のEmacs-canna の取次をしてくださるjrmさんのサイトを見たときにたまたま zap を見つけ、 一件 Contribute した愛着もあってこの際zapを使うことにした。
ということでzapリモートバックアップの設定のツボ。簡潔に。
たったこれだけ。とても簡単。
zap snap するだけならコストが低いので何度も試して 挙動をつかむ。ちゃんと destroy する練習もする。destroy を注意深くやるにはこんなコマンドラインを使うとよい。
zfs list -t snap -oname -H|grep ZAP|grep 消したいパターン : と確認しておいてから !! | xargs -n 1 echo zfs destroy : してさらにコマンドラインを確認し、それで間違いなければ !! | sh -x
とすると、実行するコマンドを視認できるのでよい。
このように、実行するコマンドを xargs と echo の組み合わせで作ってから sh -x にパイプで渡すのはわかりやすい。もちろん、xargsの引数に 空白が含まれる場合は注意。ファイル名に空白入る場所では使えない。
受けて溜め続けるだけなら特に設定不要。zfs send で送るホストからの ssh remote zfs recv を許可するための .ssh/authorized_keys を設定する程度。
溜め続けずに消すには crontab に zap destroy を仕込む。 この時、引数に対象ホスト名を入れるのを忘れない。 たとえばこんな感じ。
# delete ZFS snapshots 44 05 * * * zap destroy bravo,phe
このあたりまとめて ZFS Snapshot Management and Replication with zap に書いてある。 ああ、ここ先に読めばよかった。