tarで複数ファイルをまとめる - Linux

tarは複数のファイルやディレクトリをひとつのファイルへまとめるコマンドです。同時にオプションを指定することでgzip形式などへ圧縮することも可能。

固める

tarコマンドは最初に書庫名、続いて書庫に突っ込みたいファイルやディレクトリを列挙。ディレクトリを指定した場合は、その配下にあるすべてのファイルやディレクトリが対象となります。

$ tar cvf image.tar image/
image/oh.png
image/sad.png
image/smile.png

$ ls
image image.tar

tarで固めただけでは圧縮されませんからファイルサイズは大きいままです。その代わり圧縮と併用した時と比べ処理速度は高速です(CPUやメモリなどのリソースも食いません)。例えばJPEG画像やMPEG動画などあまり圧縮が期待できないものをまとめる場合には、tarで固めるのみにしておいた方が効率が良いでしょう。

オプション "c" は create の略称で書庫を新規に作成します。\ "v"は verbose の略称で途中経過を表示します(ここではどのファイルを固めているか)。\ "f"は file の略称、書庫ファイル名を指定するという意味になります。

固めながら圧縮する

オプションを指定することで、固めながら圧縮することもできます。

$ tar zcvf log.tar.gz *.log
20151001.log
20151002.log
20151003.log

$ ls -lh
total 240K
-rw-r--r-- 1 chronos chronos 44K Mar 17 07:44 20151001.log
-rw-r--r-- 1 chronos chronos 59K Mar 17 07:44 20151002.log
-rw-r--r-- 1 chronos chronos 94K Mar 17 07:44 20151003.log
-rw-r--r-- 1 chronos chronos 27K Mar 17 07:46 log.tar.gz

lsの結果を見て分かる通り、3ファイルの合計値よりもtar実行後のファイルの方が容量が少なくなっていることが確認できます。

オプション"z"を指定するとGZIPでの圧縮になります。この場合の拡張子は ".tar.gz" または ".tgz"を用います。その他の形式は以下の一覧を参照してください。

オプション 形式 拡張子
-z gzip .tar.gz (.tgz)
-j bzip2 .tar.bz2
-Z (大文字) compress .tar.Z
-J (大文字) xz .tar.xz

固めてから圧縮する

何らかの事情でtarが対応していない圧縮形式を利用したい場合は、単純にtarで固めたあとに、ご希望のコマンドを実行すればOK。

$ tar cv www.tar www/
$ 7z  a  www.tar.7z www.tar
Creating archive www.tar.7z
Compressing  www.tar      
Everything is Ok

$ ls 
www  www.tar  www.tar.7z

※上記は7Zipで圧縮した例。