tar(tape archives)はファイルフォーマットの1つです。Linux/UnixではWindowsでいうところのzipのような感覚で使います。元々は磁気テープに記録する用途で使われていたフォーマットですが、現在ではgzipやbzip2と組み合わせて圧縮して使う場合がほとんどです。
基本的な使い方
複数のファイルをtarにまとめる
$ tar cvf example.tar file1.txt file2.jpg file3.doc
ディレクトリーexampleをtarにまとめる
$ tar cvf example.tar example
tarファイルを展開する
$ tar xvf example.tar
※処理内容を表示する必要がない場合はvを除いてtar cfのように指定することもできます。
※シェルから使う場合、ワイルドカード*を使って*.txtという風にもできます。
圧縮する場合
圧縮なしのtarはファイルを1つにまとめるだけで、サイズは変わりません。(正確には少し増えます。)zipなどのように圧縮したい場合はgzipかbzip2を使います。
gzipで圧縮(圧縮率は普通で、処理負荷は低め)
$ tar zcvf example.tar.gz example
.tar.gzを展開
$ tar zxvf example.tar.gz
bzip2で圧縮(圧縮率は高めで、処理負荷も高め)
$ tar jcvf example.tar.bz2 example
.tar.bz2を展開
$ tar jxvf example.tar.bz2
特定のファイルを除外して圧縮する場合
tarに圧縮する際、特定のファイルやディレクトリを除外したい場合は--excludeオプションを使います。
exampleディレクトリ内でabcでないファイル・ディレクトリを.tar.bz2に圧縮
$ tar jcvf example.tar.bz2 --exclude abc example
exampleディレクトリ内で拡張子.logのファイルを除いて.tar.gzに圧縮
$ tar zcvf example.tar.gz --exclude *.log example
アーカイブされているファイルの一覧を表示
実際に展開はしないで、ファイルの一覧のみ表示したい場合はxオプションの代わりにtオプションを使います。
$ tar ztvf example.tar.gz
アーカイブから特定のファイルもしくはディレクトリのみ取り出す
アーカイブから特定のファイルもしくはディレクトリのみ取り出したい場合は次のようなコマンドを実行します。
$ tar zxvf example.tar.gz path/to/file.txt
ワイルドカードを使って取り出すファイルを指定したい場合は--wildcardsオプションを使います。
$ tar zxvf example.tar.gz --wildcards "path/to/dir/*"