この文書は Debuan BNU/Linux 不徹底入門 (2001 年冬号) に投稿したものです。
この文書ではバックアップソフト afbackup の簡単な使い方を解説します。 ネットワーク上に複数のホストを管理しており、 それらのバックアップをまとめて定常的にとりたい、 と考えている人に有用だと思います。
afbackup は http://sourceforge.net/projects/afbackup/ で開発・配布されているバックアップソフトです。 もちろん Debian ではパッケージになっていて、 apt-get で簡単にインストールできます。
afbackup はクライアント/サーバ形式を取っており、 ひとつのホストにテープドライブをくっつけてやれば、 ネットワークに接続された全部のホストのバックアップを まとめて取ることができます。
同種のソフトウェアとしては amanda も良く知られています。 amanda では afbackup よりもずっと 柔軟な設定・運用が可能になっているのですが、 それだけインストール時の作業量も多く、 筆者も実は過去挫折しました (ので現在 afbackup を使っているわけですが) 。
テープドライブは最近随分安くなったとはいえ、 まだ個人で使うには高い買い物かもしれません。 いまだと DDS3 のデバイスが 10 万円ちょい、 DDS4 だと 15 万円ちょっとになるでしょうか。 大抵は SCSI ですから、ホストアダプタも必要になります。
ただ中規模以上のデータサーバのバックアップシステムに使うには、 メディアをドライブから取り外して物理的に隔離できる テープデバイスは大きな利点を持っていると思います。 私は年度末に余った予算などを有効活用 (?) して、 TR-4 (4G)、 DDS3 (12G) ときて、現在は DDS4 (20G) のデバイスを使っています (容量はいずれも非圧縮時)。
なおテープデバイスの基本的な使い方は、 JF のdump-restore mini-HOWTO を参考にしてください。 特に mt を使った操作は、いろいろ試して慣れておきましょう。
テープデバイスの準備は既に出来ているとします。 まずは何はなくとも apt-get install afbackup しましょう。 これがサーバのパッケージです。
次に/etc/afbackup/server.conf を編集します。 sid に入っているパッケージでは afserverconfig, xafserverconfig という設定補助用のコマンドもありますが、 もちろん直接手で編集してもかまいません。 困ったら man afserver.conf しましょう。
迷いやすい/間違いやすいのは Tape-Blocksize と Cartridge-Handler でしょうか。 前者は大抵 1024 にしておけばいいでしょう。 後者はテープ入換えロボットがあるかどうかで、 大抵の人は持っていないでしょうから 0 (not) にしておきましょう。
次にテープの準備をします。テープの本数は server.conf の Number Of Cartridges で指定します。
# label_tape 1
のように、本数分繰り返すことになります。
つぎに /etc/afbacup/cryptkey を準備します。 ここにはサーバ−クライアント間での認証に使う文字列が平文で格納されます。 ので、このファイルは root の所有にし、 モードは 600 にしておかなければなりません。 この文字列はネットワークをそのまま流れるようです。 認証としてはかなりヌルいのですが、 まあその分設定は簡単になっているわけです。
あとは inetd.conf に登録…なのですが、 Debian ならこれもインストーラが自動でやっておいてくれます。 なお afbackup ではデフォルトだと tcp, udp の 2988 番ポートを使います。 このポートを iptables などで塞がないように気をつけてください。
クライアントのパッケージは afbackup-client です。 ひとつのマシンにサーバとクライアントの両方を入れることも可能で、 そうすれば自分自身のバックアップを取ることもできます。
クライアントでは /etc/afbackup/client.conf を編集します。 同じく sid には afclientconfig, xafclientconfig などの 設定補助コマンドもあります。マニュアルは man afclient.conf で見ましょう。
クライアントにも /etc/afbackup/cryptkey は用意します。 これはサーバのファイルをコピーしてくれば OK です。 所有者とパーミッションはしかるべく。
この状態でクライアントから
# full_backup
を実行するとフルバックアップが取れます。ついで
# incr_backup
を実行すると、前回の (フル/インクリメンタル) バックアップ以降に 変更があったファイルのみをバックアップします。
通常はこれらのコマンドを cron に登録することになるでしょう。 私は週に一回月曜日の早朝にフルバックアップを、 毎日二回インクリメンタルバックアップを取っています。 サーバの/home の大きさは現在 11G くらいで、 非圧縮 20G のテープを、ほぼ二週間に一回交換しています。 DDS の場合は交換時にクリーニングテープを通しておくといいでしょう。
テープに保存したファイルのリストは、 クライアントの /var/lib/afbackup 以下に保存されます。 これがなくなるとレストア出来なくなっちゃうので、 別のネットワークのマシンに rsync したり CD-R に焼いたりして、 ミラーを取っておくことをおすすめします。 afclient.conf でバックアップ終了時に起動するコマンドが設定できるので、 私はこれを使って別のホストに rsync するようなスクリプトを走らせています。
何らかの理由でバックアップがジャムってしまったときは、 cartis コマンドを使うと、次のバックアップを強制的に別のテープから 開始させることもできます。例えば
# cartis -i 4 1
とすれば、次のバックアップは 4 番目のテープカートリッジから開始されます。 1 はカートリッジ中のファイル番号で、この場合は先頭からになります。
レストアには afrestore コマンドを使います。 例えば /home/nakano/Mail/debian-users 以下をレストアしたい場合は
# afrestore -C /var/tmp home/nakano/Mail/debian-users
のように使います (先頭の/がないことに注意) 。 こうすると /var/tmp/home/nakano/Mail/debian-users 以下にデータがレストアされます。
afrestore が SUID されていれば一般ユーザでも使えますが、 大抵はスーパーユーザの利用に留めておくほうが望ましいでしょう。
時間を指定したスナップショットをレストアしたり、 フルバックアップ以前のシリーズからレストアすることもできます。 詳しくは afrestore のマニュアルを読んでください。
バックアップは最初の設定のハードルが高いので、 「やらなきゃなあ」とは思いつつも、ついつい放置することになりがちです (そして痛い目に会う :-) 。 この文書がそのハードルを少しでも下げることに寄与できれば幸いです。
お約束ですが、この文書の内容は無保証です。 本文書の内容を利用するにあたっては、 すべて読者の責任で行ってください。
…なんてまじめな文章なんだろう (わら