tar 複数のファイルを1つにまとめる、またはまとめたものを展開する
tar [オプション] アーカイブ名 [ファイル...]試してみる
tar -cvf data.tar datadata ディレクトリを data.tar にまとめます(c は作成、v は経過の表示、f はファイル名の指定)。
tar -tf data.tart で、アーカイブの中身を展開せずに一覧表示します。
tar -czf data.tar.gz dataz を足すと、gzip で圧縮しながらまとめます。
mkdir restore展開先のディレクトリを作ります。
tar -xzf data.tar.gz -C restorex で展開します。-C で、展開先のディレクトリを指定します。
tar -xf data.tar data/config.txt -C restore --strip-components=1一部のファイルだけを取り出します。--strip-components=1 で、先頭の1階層を取り除きます。
主なオプション
-c | アーカイブを作成する |
|---|---|
-x | アーカイブを展開する |
-t | アーカイブの中身を一覧表示する |
-f ファイル | 対象のアーカイブファイルを指定する |
-v | 処理したファイルを表示する |
-z | gzip で圧縮、または展開する |
-j | bzip2 で圧縮、または展開する |
-J | xz で圧縮、または展開する |
-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 で中身を確かめると、ファイルがばらばらに散らばる事故を防げます。