tar アーカイブの作成と展開

Linux ではファイルをまとめて配布するとき等には、 *.tar.gz という拡張子のついたファイルで配布される場合がよくあります。

普段 Windows を使っている人にはちょっと見慣れないものだと思います。この記事ではこれの意味と使い方を説明します。

アーカイブとは?

複数のファイルを一つにすることを、一般的にアーカイブといいます。

アーカイブを作成するコマンドに tar コマンドがあります。 tar コマンドで作成したアーカイブには通常、 目印として .tar という拡張子をつけておきます。

例えば、file1file2 があり、 これら二つをまとめ上げて foo.tar というファイルを作るなら次のようにします。

$ ls
file1  file2
$ tar -cf foo.tar file1 file2
$ ls
file1  file2  foo.tar

コマンドオプションについては後述します。ここではアーカイブを作成、展開という流れだけみてください。

確かに foo.tar ができました。これが本当に file1file2 をアーカイブしたものか確かめるために、一度、もとのファイルを削除してみましょう。

$ rm file*
$ ls
foo.tar # 確かに元のファイルは削除された

元のファイルが削除されたことを確認したので、foo.tar を展開してみましょう。

$ tar -xf foo.tar
$ ls
file1  file2  foo.tar

確かに file1file2 が元に戻りました。

*.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 コマンドの基本的な使い方を説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Linux 入門