schedule2018-07-08

tarコマンドの使い方と圧縮のオプション

tar

アーカイブファイルとしてまとめるコマンド。 単体では圧縮しないため、オプションでzjを指定する必要がある。

以下コマンドはmacOS High Sierraで確認しました。

zipコマンドでの圧縮方法はこちら

書式

tar [オプション] アーカイブ

tar.gzの圧縮と解凍

オプションのcxが異なる。

圧縮

$ tar -zcvf output_file.tar.gz ./target_dir

target_dirをアーカイブとしてまとめ、gzipで圧縮したoutput_file.tar.gzを生成する。

解凍

tar -zxvf xxxx.tar.gz

拡張子.tar.gzを解凍する。

オプションの意味

オプション 説明
-z gzip形式にアーカイブを圧縮・展開する。
-c 新しくアーカイブを作成する。
-x アーカイブを展開する。
-v 作成・展開するアーカイブのファイルリストを表示する。
-f アーカイブファイルを指定する。

他の形式での圧縮/解凍

オプション 形式
-j tar.bz2
-J tar.xz
-z tar.gz

tar.bz2

圧縮

$ tar -jcvf output_file.tar.bz2 ./target_dir

解凍

$ tar -jxvf output_file.tar.gz

tar.xz

圧縮

$ tar -Jcvf output_file.tar.xz ./target_dir

解凍

$ tar -Jxvf output_file.tar.xz

解凍せずに中身を確認する tzf

$ tar -tzf output_file.tar.gz
./target_dir/
./target_dir/bbb.txt
./target_dir/aaa.txt

上書きせず解凍する k

xで解凍する際、既にあるファイルを上書きせず解凍する。

$ tar -kzxvf output_file.tar.gz
x ./target_dir/: Already exists
x ./target_dir/ccc.txt
x ./target_dir/bbb.txt: Already exists
x ./target_dir/aaa.txt: Already exists
tar: Error exit delayed from previous errors.

存在しなかった./target_dir/ccc.txtは解凍されファイルが生成された。 一つでも既存のファイルがある場合、tar: Error exit delayed from previous errors.がでるようだ。

オプション

option 説明
-t アーカイブの中身のリストを出力する。
-k xでの解凍時に既にあるファイルを上書きしない。
-A アーカイブにファイルを追加する。

終わりに

zipコマンドでの圧縮方法はこちら

参考