gzip対応していないtarでtar.gzをワンライナーで圧縮・解凍する
投稿者:しんさん 2017/01/04

GNU tarではgzip形式をtarコマンドが直接扱える
- ファイルをかためて保管したい
というときにUNIXではtar.gz形式のファイルがよく使われます。
Linux等で使われいるGNU tarではgzip形式を直接tarコマンドで扱うことができます。
##圧縮
[user@testsv ~]$ tar -zcvf test.tar.gz ./test
./test/
./test/test.txt##解凍
[user@testsv ~]$ tar -zxvf test.tar.gz
./test/
./test/test.txt
[user@testsv ~]$ tar -zcvf test.tar.gz ./test
./test/
./test/test.txt##解凍
[user@testsv ~]$ tar -zxvf test.tar.gz
./test/
./test/test.txt
tar -zオプションが使えない時
環境次第かもしれませんがAIXではtar -zオプションが使用できません。
そこで、「-」を使用して標準出力を介してgzipコマンドへパイプで渡すことでtar.gzをワンライナーで作成することができます。
##圧縮
[user@testsv ~]$ tar -cvf - ./test | gzip - > test.tar.gz
a ./test
./test/test.txt 0 ブロック。
[user@testsv ~]$ tar -cvf - ./test | gzip - > test.tar.gz
a ./test
./test/test.txt 0 ブロック。
gzip -dcオプションを使用すると結果を標準出力へ渡すことができるため、解凍はこれを利用してワンライナーで行います。
##解凍
[user@testsv ~]$ gzip -dc test.tar.gz | tar -xvf -
x ./test
x ./test/test.txt, 0 バイト, 0 メディア・ブロック。
[user@testsv ~]$ gzip -dc test.tar.gz | tar -xvf -
x ./test
x ./test/test.txt, 0 バイト, 0 メディア・ブロック。
gzipの代わりにcompressも使用できる
gzipが使用できない場合、compressを使用してtar.Z形式の圧縮ファイルを作る事ができます。
##圧縮
[user@testsv ~]$ tar -cvf - ./test | compress - > test.tar.Z
a ./test
./test/test.txt 0 ブロック。##解凍
[user@testsv ~]$ compress -dc test.tar.Z | tar -xvf -
x ./test
x ./test/test.txt, 0 バイト, 0 メディア・ブロック。
[user@testsv ~]$ tar -cvf - ./test | compress - > test.tar.Z
a ./test
./test/test.txt 0 ブロック。##解凍
[user@testsv ~]$ compress -dc test.tar.Z | tar -xvf -
x ./test
x ./test/test.txt, 0 バイト, 0 メディア・ブロック。