Linux / コマンド / tar - 複数のファイルをまとめて圧縮アーカイブを解凍する

tarは複数のファイルやディレクトリを1つのアーカイブにまとめたり、解凍したりすることができます。.tar自体は圧縮形式ではなく、gzip・bzip2・xzと組み合わせて圧縮アーカイブを作成できます。

アーカイブは、ファイルと名前・ディレクトリ構造などを1つにまとめたものです。GNU tarでは-cが作成、-tが一覧、-xが展開です。-fの引数にアーカイブ名を置きます。-zはgzip圧縮、-jはbzip2、-Jはxz圧縮と組み合わせます。

基本的な文法

tar [動作] [オプション] -f アーカイブ [ファイルまたはディレクトリ ...]

インストールされている実装とオプションは、配布版によって異なる場合があります。man tarで現在のシステムの説明を確認してください。

使用例

gzip圧縮アーカイブの作成

あらかじめproject/と中のファイルを用意し、アーカイブはそのディレクトリの外へ作成します。例ではproject/という名前を含めて保存するため、展開先にはprojectディレクトリができます。既存のproject.tar.gzを再利用すると内容を置き換えるため、名前を確認してください。

tar -czf project.tar.gz project/

解凍前に一覧確認

圧縮を解く場所とファイル名を判断するため、まずメンバーを列挙します。

tar -tzf project.tar.gz

指定したディレクトリに展開

restore/を最初に作成して、その中に展開します。既存のファイルと重複しないか確認してください。

mkdir -p restore
tar -xzf project.tar.gz -C restore/

アーカイブ内部のリストを確認する

tarはいくつかのファイルを一つのアーカイブにまとめます。次の例は小さいファイルを作成した後にまとめ、圧縮を解かずにメンバーを確認します。

printf 'hello\n' > note.txt
tar -cf bundle.tar note.txt
tar -tf bundle.tar

例の出力:

note.txt

-cは作成、-tはリスト、-fはアーカイブファイルの指定です。.tar自体は圧縮を意味せず、-z・-Jなどで別途圧縮を組み合わせることができます。信頼できないアーカイブを展開する前には、内部のパスに絶対パスや上位ディレクトリへの移動がないか確認し、別の作業ディレクトリに抽出してください。

主なオプションと形式

オプション・形式 説明
-c / -t / -x 作成・リスト・抽出の動作の中から一つを選択します。
-f ファイル 読み書きするアーカイブファイルを指定します。
-z / -j / -J gzip・bzip2・xzの圧縮をそれぞれ使用します。
-C ディレクトリ 作業基準ディレクトリを変更します。
-v 処理するファイル名を表示します。

使用する際の注意点

信用できないアーカイブは管理者権限で直接解凍しないでください。抽出対象のファイル名、シンボリックリンク、および既存ファイルの上書き可能性をまず確認し、隔離された空のディレクトリを使用してください。tar -cfで既存のアーカイブを再作成すると、内容を追加するのではなくアーカイブを書き換えるため、既存の内容が失われる可能性があります。

よくある質問

tarとgzipの違いは何ですか?

tarは複数のファイルとパスを一つの束にまとめ、gzipはデータストリームを圧縮します。tar -czfはこれら二つの機能を組み合わせたコマンドです。

公式ドキュメント

オプションの正確な動作や実装ごとの差はtar関連の公式文書で確認できます。