ファイルの圧縮とアーカイブ—Gzip、Zip、Tar

Gzip、Zipによる圧縮

 大きなファイルを圧縮することにより、ディスクスペースを節約したり、ダウンロードにかかる時間を短縮したりできます。Linuxファイルは、オープンソースの圧縮ツール GzipZip で圧縮できます。これらは大部分のオペレーティングシステム認識可能です。

 圧縮されたファイルの拡張子は、.gz になります。Gzip コマンドは、拡張子が .gz の圧縮ファイルを作ります。Gunzip は、圧縮ファイルを解凍して、なおかつ .gz ファイルを削除します。

 シェルプロンプトからファイルを圧縮する場合は、次のコマンドを入力します。

gzip filename.ext

 ファイルは圧縮され、filename.ext.gz という名前で保存されます。

 圧縮ファイルを解凍するには、次のように入力します。

gunzip filename.ext.gz

 filename.ext.gz が削除され、filename.ext という名前のファイルに置き換わります。

 Linux以外の環境のユーザーとファイルをやり取りするには、互換性の問題を回避するために、zip を使います。Red Hat Linuxではzipファイルやgzipファイルを簡単に開けますが、Linux以外のオペレーティングシステムではgzipファイルを扱えない可能性があります。

 ファイルを zip で圧縮するには、次のように入力します。

zip -r filename.zip files

 この例では、filename が生成後のzipファイルの名前を、files がzipしたいファイルの名前を表します。

 zipファイルの内容を見るには、次のように入力します。

unzip filename.zip

 zipやgzipを使って、複数のファイルを一度に圧縮することもできます。その場合は、ファイルの間をスペースで区切って指定します。

gzip filename.gz file1 file2 file3 /user/work/school

 上のコマンドは、file1file2file3 と、/user/work/school ディレクトリの内容をすべて圧縮して、filename.gz という名前の1つの圧縮ファイルを生成する例です。

tarを使ったアーカイブ

 tarファイルは、複数のファイル、1つのディレクトリの内容すべて、複数のディレクトリを1つのファイルにまとめたものであり、バックアップやアーカイブを作るには最適です。一般に、tarファイルの拡張子は .tar になります。

 tarファイルを作るには、次のように入力します。

tar -cvf filename.tar files/directories

 この例で、filename.tar は生成されるtarファイルを、files/directories はtarファイルにまとめたいファイルやディレクトリを表します。

 これらのファイルやディレクトリのパス名としては、絶対パスと相対パスのいずれでも使えます(パス名の詳細については、the section called cdによるディレクトリの変更 in Chapter 10を参照してください)。複数のファイル名やディレクトリ名は、スペースで区切って指定します。

 次のように入力すると、絶対パス名を使ったtarファイルが生成されます。

tar -cvf foo.tar /home/mine/work /home/mine/school

上のコマンドは、/work サブディレクトリと/schoolサブディレクトリ内のすべてのファイルが、カレントワーキングディレクトリ内に foo.tar という名前でまとめられます。

 コマンド tar -cvf foo.tar file1.txt file2.txt file3.txt は、file1.txtfile2.txtfile3.txt を、foo.tar という名前の新しいtarファイルにまとめます。

 tarファイルの内容を一覧表示するには、次のように入力します。

tar -tvf foo.tar

 tarファイルの内容を見るには、次のように入力します。

tar -xvf foo.tar

このコマンドを実行しても、.tar ファイルは削除されずに残りますが、.tar の内容がカレントワーキングディレクトリにコピーされます。

 tar コマンドは、ファイルを自動的に圧縮しません。tarファイルは次のようにして圧縮します。

tar -czvf foo.tar

 圧縮したtarファイルの拡張子は、.tgz になり、圧縮はgzipで行われています。

 圧縮したtarファイルを解凍するには、次のように入力します。

tar -xzvf foo.tgz