5. afio でのバックアップ

afio のコマンドオプションはたくさんあって、man afio するとうんざりしますが実際に使うオプションは限られたもの です。afio --help して出てくるもので十分でしょう。

% afio --help

Usage:  [filename generator] | afio -o [options] archive  : write archive
        afio -i [options] archive  : install archive
        afio -t [options] archive  : list table-of-contents of archive
        afio -r [options] archive  : verify archive against filesystem
Frequently used options:
 General: -v : verbose        -Z : gzip files
 Tape:    -s [volsize]   : size of volume, can have suffix k or m
          -b [blocksize] : block size (default is 5120)
          -c [count]     : buffer count blocks between doing I/O
 Floppy:  -F : device is a floppy drive, -s required    -K : verify floppies
 Install: -n : protect newer files  -k : skip corrupt data at beginning
 Select:  -y [pattern] : only process files matching pattern
          -Y [pattern] : do not process files matching pattern
Version 2.4.2 dated 21 Jan 1996

5.1. バックアップを取る

例として、全ファイルを 230MB の MO にバックアップすることを考えます。 MO は /mo にマウントされています。MO のファイルシステムはなんでもいいのですが、ext2 よりはオーバヘッドの少ない minix や DOS がいいかもしれません。

cd /
find . | egrep -v '^\./proc/|^\./mo/' | \
afio -ovZ -s 210m -L /mo/backup.log /mo/backup.afz \
2>&1 | tee /mo/backup.lis

find の後の egrep は、稼働中のシステムの /proc 以下が取られてしまうのを防ぐことと、MO 自体が取られ てしまうことを防ぐためです。この「取らない部分」に lost+found も含めたほうがいいとは思うのですが、実際にはあま り必要ないみたいですね。

afio のオプションの説明です。o はバック アップを書く意。v はリスティングを取るモード。 Z は gzip 圧縮。L はログを書く。

s は指定した容量 (この場合 210MB ) での マルチボリューム・バックアップを指示。230MB の MO であっても、ここの値は 小さめにしといたほうがいいです。ここで指定した容量以上を書こうとすると メディアの交換を要求してきますので、別の端末で /moumount し、別の MO を入れて mount して から afio に続行を指示します。afio の マルチボリュームはサイズで見てるだけなので単純なのですが、単純さ故の利点もあり ます。メディアの種類によらずに使えることです。

最後の tee の部分はなくてもいいのですが、リスティングを 画面とファイルの両方に出したいためです。ファイルのリスティングは終わった後 圧縮しといたほうがいいかも。

本当に重要なバックアップでは、afio-r オプションで、取ったバックアップが正しいかチェックしましょう。

5.2. バックアップをリストアする

戻すほうは簡単です。書きこむ場所に行って、

afio -ivZ -s 210m /mo/backup.afz

としましょう。マルチボリュームで取ったやつは、ひとつのメディアが終われば 自動的にメディアの交換を要求されるでしょう。実際に戻す前に

afio -tZ /mo/backup.afz

で中身を確認しておいたほうがいいでしょうね。

5.3. インクリメンタル・バックアップを取る

本当はインクリメンタル・バックアップまでやろうとしたら、tbackup などの ツールを使ってシステマティックに管理したほうがいいです。でもコマンドだけ でもできないことはないので一応書いておきます。 インクリメンタル・バックアップとは、要は前回のバックアップ (フル、インクリメンタルを問わず)以後に変更されたファイルをバックアップ とることですよね。そこで、上のように -L /mo/backup.log でログを残す習慣にしておけば、

cd /
find . -cnewer /mo/backup.log | \
afio -ovZ -L /mo/incback1.log /mo/incback1.afz

というふうにし、その次のインクリメンタルでは

cd /
find . -cnewer /mo/incback1.log | \
afio -ovZ -L /mo/incback2.log /mo/incback2.afz

という要領で取って行けばいいのです(ここでは egrep によるフィルタは 省略)。ただし、.log の日付けが変わって しまわないよう注意しましょう。厳密にやるなら .log の最後の 「Sun Mar 22 11:36:29 1998」などを、touch の理解する 「MMDDhhmmCCYY」の形式に変換し、touch でその日付の生成 ファイルを作り、find からはそのファイルを -cnewer で指定するようにします。まあそこまでめんどくさい ことやるなら、tbackup や taper を使ったほうがいいですけどね。