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 |
例として、全ファイルを 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 であっても、ここの値は 小さめにしといたほうがいいです。ここで指定した容量以上を書こうとすると メディアの交換を要求してきますので、別の端末で /mo を umount し、別の MO を入れて mount して から afio に続行を指示します。afio の マルチボリュームはサイズで見てるだけなので単純なのですが、単純さ故の利点もあり ます。メディアの種類によらずに使えることです。
最後の tee の部分はなくてもいいのですが、リスティングを 画面とファイルの両方に出したいためです。ファイルのリスティングは終わった後 圧縮しといたほうがいいかも。
本当に重要なバックアップでは、afio の -r オプションで、取ったバックアップが正しいかチェックしましょう。
戻すほうは簡単です。書きこむ場所に行って、
afio -ivZ -s 210m /mo/backup.afz |
としましょう。マルチボリュームで取ったやつは、ひとつのメディアが終われば 自動的にメディアの交換を要求されるでしょう。実際に戻す前に
afio -tZ /mo/backup.afz |
で中身を確認しておいたほうがいいでしょうね。
本当はインクリメンタル・バックアップまでやろうとしたら、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 を使ったほうがいいですけどね。