afio は cpio に似たコマンドです。Debian などの Linux の主要 なディストリビューションには afio のパッケージがあると思い ますが、ない場合は ソース (日本のミラーでは こっち) を持ってきて make しましょう。いや、 すでにパッケージがあっても、2.4.4 より古いのだと、後述のハードリンクの bug が あるので、最新を使いましょう。
afio の特長は「gzip と組み合わせて、圧縮してバックアップを 取れる」という点です。メディアのほうで圧縮をサポートしていない限り、dump は これができませんよね。
「まてまて、tar だって gzip で圧縮バックアップできるじゃないか」 という声は当然予期されます。筆者は tar+gzip でのバックアップはお勧めしません。 以下実例をあげて理由を書きます。
% cd /usr/X11R6/lib/X11 % tar cf - app-defaults | gzip -c > ~/app-defaults.tar.gz |
などとして、/usr/X11R6/lib/X11/app-defaults のバックアップを取るとします ( GNU tarなら「z」オプションを付けるだけですが、ここでは普通 の tar での使い方です)。さて、何らかの理由で、バックアップ・メディアが損傷を 受け、上の app-defaults.tar.gz の一部が壊れたとしましょう。実験なので、 バイナリエディタの beav で 200 バイトめを「00」に書き換えてしまいます。
% beav ~/app-defaults.tar.gz 壊す! % cd ~/tmp % zcat ~/app-defaults.tar.gz | tar xvf - app-defaults/ app-defaults/Beforelight app-defaults/Bitmap tar: Skipping to next file header zcat: /home/kikutani/app-defaults.tar.gz: invalid compressed data--crc error |
御愁傷様です。.tar.gz の途中のデータが壊れると、それ以後の部分もすべてお陀仏に なります。さて、筆者の勧める afio + gzip だとどうでしょう?
% cd /usr/X11R6/lib/X11 % find app-defaults | afio -oZ ~/app-defaults.afz % beav ~/app-defaults.afz 壊す! % cd ~/tmp % afio -ivZ ~/app-defaults.afz app-defaults -- okay app-defaults/Beforelight -- okay gzip: stdin: invalid compressed data--crc error afio: "inentry xwait()": Exit 1 app-defaults/Bitmap -- uncompressed app-defaults/Bitmap-color -- uncompressed app-defaults/Chooser -- uncompressed app-defaults/Editres -- uncompressed (以下略) |
さすがに壊した部分のファイルは戻りませんが、そこ以外は問題なくリストア されます。tar + gzip より afio + gzip のほうが安全なことは理解いただけました ね?