ファイルの圧縮・伸張方法

 ファイルの圧縮・伸張には各種のアルゴリズムがあり,Linuxでも複数の方式が使われています。ここでは,主要なファイル圧縮・伸張用のコマンドの使い方を紹介します。

●tar形式

 tar*8は,複数のファイルをまとめて1つのアーカイブ(書庫)・ファイルに格納,あるいはアーカイブ・ファイルから元のファイルを抽出するためのコマンドです。

 UNIXに実装された段階では圧縮・伸張の機能は含まれていませんでした。つまり,複数のファイルを1つにまとめたり,それを展開する機能だけを備えていました。GNUプロジェクトが配布するtarコマンド(すなわちLinuxのtarコマンドです)には圧縮・伸張の機能もあります。

 アーカイブ・ファイルの拡張子は「.tar」となります。例えば,カレント・ディレクトリ以下のすべてのファイルをアーカイブ・ファイル/tmp/samle.tarに格納するには,

と入力します*9。アーカイブ・ファイル/tmp/sample.tarに格納されているファイル一覧を表示するには,

と入力します。アーカイブ・ファイル/tmp/sample.tarに格納されているファイルをすべて抽出するには,

と入力します。ファイル名を指定して抽出することもできます。例えば,sample.textを抽出したい場合には,

と入力します。

●gzip形式

 gzip形式では,Lempel-Zivコーディング(LZ77)を用いてファイルを圧縮します。UNIXで古くから利用されていたcompress(Z形式)コマンドをGNUが代替する目的で配布しています。gzip形式はZ形式よりも圧縮率が高いことから幅広く利用されています。

 圧縮コマンド名はgzipです。伸張コマンド名はgunzipですが,実体はgzipコマンドです。gzip形式はtarコマンドのオプションとしても利用可能で,「z」オプションで指定します。拡張子は「.gz」になります。従って,tar形式のアーカイブ・ファイルsample.tarをgzip形式で圧縮すると,ファイル名はsample.tar.gzとなります。拡張子が複数あるのはまぎらわしいので,sample.taz,あるいはsample.tgzというファイル名にすることもあります。

 例えば,sample.textをgzip形式で圧縮するには,

と入力します。すると,gzip形式のファイルsample.text.gzが作成されます*10

 この圧縮ファイルを伸張したい場合には,

と入力します。すると,元のファイルsample.textが復元されます*11

 tar.gz形式の圧縮されたアーカイブ・ファイルを伸張して展開するときには,

と入力すれば,一気にファイルを取り出せます。

 圧縮したファイルの内容がテキスト形式の場合には,ファイルはgzip形式のままで伸張した内容を標準出力に出力するzcatコマンドもあります。


写真2 gzipコマンドの例
オンライン・ヘルプ・ファイル/usr/share/man/man1/gzip1.gzの情報を表示しています。61.5%の圧縮率であることが分かります。
[画像のクリックで拡大表示]

 圧縮ファイルの情報を表示したい場合には,-lオプションを付加します。すると,元のファイル・サイズと圧縮後のサイズ,圧縮率が表示されます。例えば,gzipコマンドのオンライン・ヘルプ・ファイル/usr/share/man/man1/gzip1.gzの情報を表示してみます(写真2)。圧縮前(すなわちオリジナル)のファイル・サイズは15.5Kバイトですが,圧縮後は6Kバイトとなっており,61.5%の圧縮率であることが分かります。