tar アーカイブの作成と展開
Linux ではファイルをまとめて配布するとき等には、 *.tar.gz という拡張子のついたファイルで配布される場合がよくあります。
普段 Windows を使っている人にはちょっと見慣れないものだと思います。この記事ではこれの意味と使い方を説明します。
アーカイブとは?
複数のファイルを一つにすることを、一般的にアーカイブといいます。
アーカイブを作成するコマンドに tar コマンドがあります。 tar コマンドで作成したアーカイブには通常、 目印として .tar という拡張子をつけておきます。
例えば、file1 と file2 があり、 これら二つをまとめ上げて foo.tar というファイルを作るなら次のようにします。
$ ls
file1 file2
$ tar -cf foo.tar file1 file2
$ ls
file1 file2 foo.tar
コマンドオプションについては後述します。ここではアーカイブを作成、展開という流れだけみてください。
確かに foo.tar ができました。これが本当に file1 と file2 をアーカイブしたものか確かめるために、一度、もとのファイルを削除してみましょう。
$ rm file* $ ls foo.tar # 確かに元のファイルは削除された
元のファイルが削除されたことを確認したので、foo.tar を展開してみましょう。
$ tar -xf foo.tar
$ ls
file1 file2 foo.tar
確かに file1 と file2 が元に戻りました。
*.tar.gz って何?
アーカイブは複数のファイルをまとめていますが、実はアーカイブを作成しただけでは圧縮されていません。圧縮するためには圧縮形式を明示的に指定しなければなりません。
*.tar.gz というのは、アーカイブ .tar を、 さらに GNU zip 形式で圧縮したファイルにつける拡張子です。GNU zip (gzip) 形式の拡張子が .gz というわけです。
tar コマンドはオプションを指定することで、アーカイブして gzip で圧縮するという操作を一度に行うことができます。
tar コマンドの使い方
アーカイブの作成
それでは tar コマンドの使い方を説明します。
作成するには "Create" の意味で、-c を指定します。
また、アーカイブ時に含まれるファイルリストを表示するには、-v オプションを使います。
GNU Zip 形式で圧縮するために -z を指定します。
作成するアーカイブのファイル名を指定するために -f オプションを使います。 このとき、拡張子として .tar.gz をつけておきます。従って -f <ファイル名>.tar.gz とします。
Linux では一般論として、たいていの場合複数のオプションはハイフンに続けてまとめて書くことができます。つまり、
$ <コマンド> -a -b -c
というコマンドは、次と同じ意味になります。
$ <コマンド> -abc
基本的にハイフンに続けて書く順番も問いません。
しかし、パラメータを受け取るオプションがある場合は、そのオプションのすぐ後ろにパラメータを書きます。 tar コマンドの場合、 ファイル名を指定する -f オプションは、ファイル名を指定する必要がありますから、 -cvzf <ファイル名>.tar.gz のように、 f だけは最後 (ファイル名指定の直前) に書く必要があります。
そして、最後にアーカイブするファイルリストまたはディレクトリを指定します。
例として、以下のようなディレクトリ dir1 をアーカイブするときのコマンドは次のようになります。
$ tree . └── dir1 ├── f1 ├── f2 └── f3 1 directory, 3 files $ tar -cvzf foo.tar.gz dir1 dir1/ dir1/f1 dir1/f2 dir1/f3 $ ls dir1 foo.tar.gz
上の注釈で書いたように、オプションはまとめて書いたり、バラバラに書いたりできるので、
$ tar -cvzf foo.tar.gz dir1
は、次と同じ意味です。
$ tar -c -v -z -f foo.tar.gz dir1
tar コマンドでは、オプション指定のハイフン - は省略できるので、上のコマンドはハイフンなしで次のように書いても同じです。
$ tar cvzf foo.tar.gz dir1
tar コマンドはオプションがたくさんあって分かりにくい、という印象を持っている人もいると思いますが、 意味をひとつひとつ見ていくと、わかりやすいですね
アーカイブの展開 (解凍)
それでは次にアーカイブからファイルを取り出す方法を説明します。
ファイルを取り出すのは日本語で「展開」とか「解凍」といいますが、英語では "extract" といいます。"extract" は「ひっこ抜く」とか「抽出する」という意味です。 アーカイブからファイルをエクストラクトするので、-x オプションです。
アーカイブから取り出されたファイルのリストを表示する場合は -v オプションを指定します。
展開したいアーカイブファイル名は -f オプションに続けて指定します。
以上から、上記で作成したアーカイブ foo.tar.gz を展開するのは次のコマンドになります。
$ tar -xvf foo.tar.gz dir1/ dir1/f1 dir1/f2 dir1/f3
tar コマンドは圧縮フォーマットの種類は自動判別しますので、 gzip 形式を指定する -z オプションはつけなくても展開できます。
以上で tar コマンドの基本的な使い方を説明しました。