この文書は Debuan BNU/Linux 不徹底入門 (2001 年冬号) に投稿したものです。

afbackup を使おう

この文書ではバックアップソフト afbackup の簡単な使い方を解説します。 ネットワーク上に複数のホストを管理しており、 それらのバックアップをまとめて定常的にとりたい、 と考えている人に有用だと思います。

1 はじめに

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 を使った操作は、いろいろ試して慣れておきましょう。

2 サーバの設定

テープデバイスの準備は既に出来ているとします。 まずは何はなくとも 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 などで塞がないように気をつけてください。

3 クライアントの設定と日々の運用

クライアントのパッケージは 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 はカートリッジ中のファイル番号で、この場合は先頭からになります。

4 レストアの仕方

レストアには 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 のマニュアルを読んでください。

5 終わりに

バックアップは最初の設定のハードルが高いので、 「やらなきゃなあ」とは思いつつも、ついつい放置することになりがちです (そして痛い目に会う :-) 。 この文書がそのハードルを少しでも下げることに寄与できれば幸いです。

お約束ですが、この文書の内容は無保証です。 本文書の内容を利用するにあたっては、 すべて読者の責任で行ってください。

…なんてまじめな文章なんだろう (わら


中野武雄 <nakano@apm.seikei.ac.jp> (2001-11-16)

中野の Linux ページへ
中野のホームページへ