圧縮・展開したい(tar)

// 複数のファイルをまとめて圧縮
$ tar czvf 圧縮ファイル.tar.gz ファイル1 ファイル2

// 圧縮されたファイルを展開
$ tar xzvf 圧縮ファイル.tar.gz

tarコマンドで、複数のファイルをまとめて圧縮したり、圧縮されたファイルを展開できます。 czvfで圧縮、xzvfで展開します。 fはファイル名を指定するオプションなので、末尾に付ける必要があります。

注釈

tarはTape ARchiveの略です。 もともとは複数ファイルをひとつのファイルにまとめるコマンドでした。 そこにzなどの圧縮オプションが追加され、圧縮/解凍コマンドとして使えるようになっています。

警告

引数に与えるファイル名のならびには気をつけましょう。 さもないと、大事なデータが消えてしまうことになります。 (経験者)

圧縮したい(tar czvf)

// [C]reate g[Z]ip [F]iles
$ tar czvf 圧縮ファイル.tar.gz ファイル1 ファイル2
$ tar czvf 圧縮ファイル.tar.gz -C ディレクトリ名 .

czvfで、gzip形式の圧縮ファイルを作成できます。 -C ディレクトリ名オプションで、指定したディレクトリをまるごと圧縮できます。 ファイル名やディレクトリ名は相対パスでも絶対パスでも指定できます。

特定のファイルを除外したい(--exclude)

$ tar czvf 圧縮ファイル.tar.gz --exclude='*.log' ディレクトリ名

--excludeオプションで、パターンにマッチするファイルを圧縮対象から除外できます。

中身を確認したい(tar tzvf)

// [T]able of contents g[Z]ip [V]erbosely [F]ile
$ tar tzvf 圧縮ファイル.tar.gz

tzvfで、展開せずにアーカイブの中身を一覧表示できます。 大きなファイルを不用意に展開する前の確認に便利です。

解凍したい(tar xzvf)

// e[X]tract g[Z]ip [F]ile
$ tar xzvf 圧縮ファイル.tar.gz

xzvfで、gzip形式の圧縮ファイルを解凍できます。

特定のファイルだけ展開したい

$ tar xzvf 圧縮ファイル.tar.gz ファイル名

xzvfのあとにファイル名(またはパターン)を指定すると、アーカイブの中から該当するファイルだけを展開できます。

アーカイブしたい(tar cf / tar xf)

// [C]reate [F]iles
$ tar cf アーカイブファイル.tar ファイル1 ファイル2

// e[X]tract [F]iles
$ tar xf アーカイブファイル.tar

cfで、複数のファイルをひとつにまとめたアーカイブファイルを作成できます。 xfで、アーカイブファイルを展開できます。

圧縮形式を変更したい

// bzip2形式で圧縮
$ tar cjvf 圧縮ファイル.tar.bz2 ファイル1 ファイル2
$ tar --bzip2 -cvf 圧縮ファイル.tar.bz2 ファイル1 ファイル2

// xz形式で圧縮
$ tar cJvf 圧縮ファイル.tar.xz ファイル1 ファイル2
$ tar --xz -cvf 圧縮ファイル.tar.xz ファイル1 ファイル2

// zstd形式で圧縮
$ tar --zstd -cvf 圧縮ファイル.tar.zst ファイル1 ファイル2

z(--gzip)でgzip形式、 j(--bzip2)でbzip2形式、 J(--xz)でxz形式の圧縮ファイルを作成できます。

--zstdでzstd形式、 --lzipでlzip形式、 --lzmaでlzma形式の圧縮ファイルを作成できます。

展開時(xvf)は、圧縮形式を指定しなくても拡張子や中身から自動判別されます。

圧縮形式の違いは、圧縮率や圧縮/展開速度に影響します。 繰り返しの多いテキストログ(419KB)を各形式・既定の圧縮レベルで圧縮して比べてみました。

形式

サイズ

削減率

速度

特徴

元のファイル

419KB

-

-

-

gzip

14KB

96.7%

最速クラス

互換性がもっとも高い。圧縮率は控えめ

bzip2

6.0KB

98.6%

やや遅い

ブロックソートでテキストに強く、gzipより高圧縮率

xz

3.0KB

99.3%

中程度

圧縮率は最良。展開時にメモリを多く使う

zstd

5.5KB

98.7%

最速クラス

速度と圧縮率のバランスが良い。レベルを上げても比較的高速

削減率は、元のサイズからどれだけ小さくなったかを示します。 値が大きいほどよく圧縮されています。

互換性を重視するならgzipを選ぶとよいです。 速度優先ならgzipかzstd、 圧縮率優先ならxz、 バランス重視ならzstd がよさそうです。