tar コマンドによる圧縮と展開

tarは、アーカイブファイルを作るためのコマンドです。

アーカイブを作る為の cf オプション

アーカイブファイルは-cfオプションの指定で作れます。それぞれ以下の意味があります。

  1. -c 新たにアーカイブファイルを作ります
  2. -f ファイル名は...です。

-fは値を取るオプションで、これに渡したファイル名でアーカイブファイルが作られます。ファイル名には.tarという拡張子を付けることが一般的です。

以下は作成例です。

tar -cf document.tar document

最後にアーカイブに含めたいディレクトリやファイルを続けます。これは複数指定でき、その場合はdocument html foo.ymlのように渡します。

アーカイブの中身を確認する為の tf オプション

上記セクションで作成したdocument.tarにちゃんと特定のファイルが含まれてるか確認したい場合は、-tfを使います。さらに-vを追加するとlsの結果ような形で一覧できます。

  1. -t アーカイブファイルを一覧する
  2. -v 詳しく表示

以下は確認例です。

tar -tf document.tar
# document/
# document/1.md

アーカイブに含めるファイルを絞る

「しまった、アレ含ませたくなかった!」なんて場合は--excludeオプションで含ませたくないディレクトリやファイルのパターンを渡します。

tar -f document.tar --exclude document/1.md

tar -tf document.tar
# document/

複数のパターンがある場合は、その数だけ--excludeを指定する必要があります。

tar -cf archive.tar --exclude .git/ --exclude .DS_Store .

tar tf archive.tar
# .git/ と .DS_Store を除いた現在のディレクトリ以下の
# すべてのディレクトリとファイル

アーカイブにファイルを追加する rf オプション

「しまった、アレ指定し忘れた!」なんて場合は-rfで後から追加できます。

  1. -r アーカイブに指定ディレクトリやファイルを追加

以下は追加例です。

mkdir html
touch html/1.html

tar -rf document.tar html

tar -tf document.tar
# document/
# document/1.md
# html/
# html/1.html

ちなみに作り直しても大丈夫です。

圧縮アーカイブファイルを czf, cjf オプション

targzipbzip2による圧縮を行えます。これらを使ったアーカイブファイルの拡張子は一般的にそれぞれtar.gztar.bz2になります。

オプションに出てきたzjはそれぞれ以下のような意味です。

  1. -z gzipで圧縮する
  2. -j bzip2で圧縮する

以下例です。

# gzip で
tar czf document.tar.gz document

# bzip2 で
tar cjf document.tar.bz2 document

違いはbzip2の方がアーカイブファイルサイズを小さくできますが、圧縮時間も倍以上掛かるようです。

アーカイブを展開する為の xf オプション

上記セクションで作成したdocument.tarに展開したい場合は、-xfを使います。

  1. -x アーカイブファイルからファイルを取り出す
tar -xf document.tar

後にアーカイブ内のあるファイルへのファイルパスを指定することで、それだけを取り出す事もできます。

tar -xf document.tar document/1.md

find document
# document
# document/1.md

取り出すのでは無く中身だけ見る

-xOfとして渡すことで、取り出すさずその中身を見れます。

tar -xOf document.tar document/1.md
# 1.md の中身

オプションについて

tarコマンドでは最初の短いオプション(cfなど)の塊に限って-を省略できます。つまり-cf-tfの代わりにcftfと使うことができます。

tar cf document.tar document
tar tf document.tar
tar xf document.tar document