utte

tar 複数のファイルを1つにまとめる、またはまとめたものを展開する

tar [オプション] アーカイブ名 [ファイル...]

試してみる

主なオプション

-cアーカイブを作成する
-xアーカイブを展開する
-tアーカイブの中身を一覧表示する
-f ファイル対象のアーカイブファイルを指定する
-v処理したファイルを表示する
-zgzip で圧縮、または展開する
-jbzip2 で圧縮、または展開する
-Jxz で圧縮、または展開する
-C ディレクトリ処理の前にそのディレクトリへ移動する(展開先の指定など)

解説

まとめると圧縮は別の話

tar はもともと、複数のファイルを1つのファイル(アーカイブ)にまとめるためのコマンドで、それ自体はファイルを小さくしません。小さくする(圧縮する)ときは、gzip、bzip2、xz を組み合わせます。tar のオプションに -z、-j、-J を付けると、まとめると同時に圧縮できます。

拡張子 圧縮方式 tar のオプション
.tar なし なし
.tar.gz / .tgz gzip -z
.tar.bz2 bzip2 -j
.tar.xz xz -J

オプションの組み立て

作成は -c、展開は -x、一覧は -t のうち、必ず1つを指定します。-f の直後にアーカイブ名を書くので、-czf data.tar.gz のように f は最後に置きます。オプション先頭の - は省略でき、tar czf data.tar.gz data とも書けます。

絶対パスの扱い

/etc/hosts のような絶対パスを指定して作成すると、GNU tar は先頭の / を取り除いて記録します。展開したときに、意図しない場所のファイルを上書きしないための安全のためです。

展開先

展開は標準ではカレントディレクトリに行われます。-C で展開先を指定できます。展開前に -t で中身を確かめると、ファイルがばらばらに散らばる事故を防げます。

このコマンドを使う問題

  1. tarでディレクトリをgzip圧縮のアーカイブにまとめる
  2. tarアーカイブから特定のファイルだけを取り出す

関連するコマンド

LinuC 101の出題範囲