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/*"