ftpや gopherなどで取ってきた、UNIXやMS-DOSのファイルは、普 通、「圧縮」といってコンパクトにまとめたファイルになっています(100個も あるようなファイルを1つずつ持ってくる気になりますか?)。UNIXでは、 *.tar.Z,*.tar.gzといった圧縮ファイルの名前がほとんどです。MS-DOSでは、 *.lzh,*.zipといったファイル名が見られます。
*.tar.Z,*.tar.gzは、二段階の圧縮プロセスを経ている事が判ります。 .Zは、それが compressというコマンドで圧縮されているという事 です。
compress ファイル名
入力ファイルを圧縮して、最後に .Zを付けたファイル名で記録します。
この解凍には、 uncompressというコマンドが使われます。
uncompress ファイル名
圧縮された入力ファイルを解凍します。
.gzは、それが gzipというコマンドで圧縮されているという事です。
gzip [オプション] ファイル名
compressよりも効率の良い圧縮、展開を行います。圧縮は最後に .gzを付けます。オプションがないと圧縮します。
オプション
さてこれによって、 *.tarのファイルができます。これは、 tarと いう形式でまとめられている、という事です。 compress,gzipでは1つ のファイルしか圧縮することはできません。そこで、 tarを用いていく つかのファイル(ディレクトリも含みます。)を1つのファイルにまとめたり ( アーカイブといいます。)、それを再び戻したりします。
tar { オプション } f ファイル名 [入出力ファ イル(ディレクトリ)名 ]
tar形式でのファイル群のアーカイブ、復元を行います。 オプションの最後は fで終わり、ファイル名を指定します。 ファイル名は原則として、 .tarで終わるようにします。
オプション
testa.docと testb.docを test.tarにアーカイブする時には、 tar cvf test.tar testa.doc testb.docという形に、それを復元する時 には、 tar xvf test.tarという形になります。 tarでディレクト リをアーカイブする時の注意として、相対パスで記述した方がよいことが挙げ られます。ここを絶対パスにしてしまうと復元の時も絶対パスで復元してしま い、汎用性に欠けてしまいます。
*.zipは pkzip,pkunzip、 *.lzhは lhaといった圧縮、 解凍プログラムが各機種用に用意されています。使い方はそれぞれのマニュア ルを参照してください。
ニュースでは、 uuencode形式と呼ばれる、バイナリファイルをテキスト ファイルにしてメールなどの形で送ることができるようにする変換形式があり ます。これによって、完成したプログラムファイルを ftpのできないホ ストのコンピューターに送る事ができます。
バイナリテキストには次のコマンドを使います。
uuencode 入力バイナリファイル 出力テキストファ イル
バイナリファイルをテキストファイルの形にします。
逆に、テキストバイナリの復元には、
uudecode 入力テキストファイル
uuencodeで変換されたテキストファイルを復元します。
を使います。
ニュースでは、 uuencodeされたファイルがあまりにも大きいため、複数 のニュースメールに分けて送ることがほとんどです。これは、ニュースのサブ ジェクトで、 (1/3) といった形で表示されています。この場合では、3 つに分けた内の1番目という意味です。
ですから、ニュースの uudecodeの1つの方法としては、それぞれの分割 されたニュースをその順番どおりに1つのファイルに記録し、一番最初の BEGINと一番最後の ENDの間にある余計な部分(メールタイトルや BEGIN,END,cut hereなどのプリアンプル。 uuencode部分以外、という 事です。)を消してやります。記録したら、 uudecodeで復元してやるこ とで元のファイルができ上がります。
今までの知識と、少しの sedの知識を使うと、
cat dat? | sed '/^
END/,/^
BEGIN/d' | uudecode
というスクリプトを書いて、ニュースを順番に dat?という名前で記録した 後、これを実行することで手早く復元する事ができます。