next up previous
Next: 13. 終わりに Up: UNIX使用の手引き 基礎から応用まで Previous: 11. FTPを使う

12. 圧縮ファイル

ftp gopherなどで取ってきた、UNIXやMS-DOSのファイルは、普 通、「圧縮」といってコンパクトにまとめたファイルになっています(100個も あるようなファイルを1つずつ持ってくる気になりますか?)。UNIXでは、 *.tar.Z,*.tar.gzといった圧縮ファイルの名前がほとんどです。MS-DOSでは、 *.lzh,*.zipといったファイル名が見られます。

*.tar.Z,*.tar.gzは、二段階の圧縮プロセスを経ている事が判ります。 .Zは、それが compressというコマンドで圧縮されているという事 です。

$\hrulefill$

$\bullet$ compress $<$ファイル名$>$

入力ファイルを圧縮して、最後に .Zを付けたファイル名で記録します。

$\hrulefill$

この解凍には、 uncompressというコマンドが使われます。

$\hrulefill$

$\bullet$ uncompress $<$ファイル名$>$

圧縮された入力ファイルを解凍します。

$\hrulefill$

.gzは、それが gzipというコマンドで圧縮されているという事です。

$\hrulefill$

$\bullet$ gzip [オプション] $<$ファイル名$>$

compressよりも効率の良い圧縮、展開を行います。圧縮は最後に .gzを付けます。オプションがないと圧縮します。

オプション

$\hrulefill$

さてこれによって、 *.tarのファイルができます。これは、 tarと いう形式でまとめられている、という事です。 compress,gzipでは1つ のファイルしか圧縮することはできません。そこで、 tarを用いていく つかのファイル(ディレクトリも含みます。)を1つのファイルにまとめたり ( アーカイブといいます。)、それを再び戻したりします。

$\hrulefill$

$\bullet$ tar { オプション } f $<$ファイル名$>$ [入出力ファ イル(ディレクトリ)名 $\ldots$]

tar形式でのファイル群のアーカイブ、復元を行います。 オプションの最後は fで終わり、ファイル名を指定します。 ファイル名は原則として、 .tarで終わるようにします。

オプション

$\hrulefill$

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のできないホ ストのコンピューターに送る事ができます。

バイナリ$\rightarrow$テキストには次のコマンドを使います。

$\hrulefill$

$\bullet$ uuencode $<$入力バイナリファイル$>$ $<$出力テキストファ イル$>$

バイナリファイルをテキストファイルの形にします。

$\hrulefill$

逆に、テキスト$\rightarrow$バイナリの復元には、

$\hrulefill$

$\bullet$ uudecode $<$入力テキストファイル$>$

uuencodeで変換されたテキストファイルを復元します。

$\hrulefill$

を使います。

ニュースでは、 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?という名前で記録した 後、これを実行することで手早く復元する事ができます。


next up previous
Next: 13. 終わりに Up: UNIX使用の手引き 基礎から応用まで Previous: 11. FTPを使う
Kenshi Muto
平成11年9月17日