Unixでファイル圧縮・解凍するときに使うコマンドをまとめた
あらすじ
不意に.Zファイルがやってきて解凍の仕方を調べてしまった。あとだいたいオプションを忘れるのでメモ。対象ファイルは以下。
- .zip
- .Z
- .gz
- .bz2
- .tar.gz
- .tgz
- .tar.bz2
- .tbz
- .tar.Z
こんなファイルを固めたり解凍したり。
extracted ┣direct/ ┃┗ls.txt # man ls >> ls.txt ┣slink ┣tar.txt # man tar >> tar.txt ┗zip.txt # man zip >> zip.txt
tar ┗sample.tar $ tar tvf sample.tar ../extracted drwxr-xr-x 9999/9999 0 12月 8日 19:14 2011年 ../extracted/ lrwxrwxrwx 9999/9999 7 12月 8日 19:13 2011年 ../extracted/slink tar.txt へのシンボリックリンク drwxr-xr-x 9999/9999 0 12月 8日 19:37 2011年 ../extracted/direct/ -rw-r--r-- 9999/9999 36890 12月 8日 19:37 2011年 ../extracted/direct/ls.txt -rw-r--r-- 9999/9999 39133 12月 8日 19:07 2011年 ../extracted/tar.txt -rw-r--r-- 9999/9999 40835 12月 8日 19:11 2011年 ../extracted/zip.txt
zip(unzip) 拡張子: zip
- 圧縮
- zip 圧縮後のファイル名 [ファイル ファイル]
$ zip ../compressed/c.zip * adding: direct/ (stored 0%) adding: slink (deflated 71%) adding: tar.txt (deflated 71%) adding: zip.txt (deflated 67%)
$ zip -r ../compressed/c.zip * adding: direct/ (stored 0%) adding: direct/ls.txt (deflated 75%) adding: slink (deflated 71%) adding: tar.txt (deflated 71%) adding: zip.txt (deflated 67%)
- 解凍
- unzip 解凍ファイル.zip -d 解凍パス
$ unzip ../compressed/c.zip -d ../compressed/output/zip/ Archive: ../compressed/c.zip creating: ../compressed/output/zip/direct/ inflating: ../compressed/output/zip/direct/ls.txt inflating: ../compressed/output/zip/slink inflating: ../compressed/output/zip/tar.txt inflating: ../compressed/output/zip/zip.txt
rでディレクトリの下も含めてまとめて。解凍時にdでパス指定
compress(uncompress) 拡張子: Z, tar.Z
- 圧縮
- compress -fv [ファイル ファイル]
$ compress -fv * direct: 圧縮: 86.32% -- 通常ファイルではありません: 変更されていません。 slink: 圧縮: 60.13% -- slink.Z と置換しました。 tar.txt: 圧縮: 60.13% -- tar.txt.Z と置換しました。 zip.txt: 圧縮: 57.45% -- zip.txt.Z と置換しました。
$ compress -v sample.tar sample.tar: 圧縮: 60.78% -- sample.tar.Z と置換しました。
- 解凍
- compress -dv [ファイル ファイル]
- uncompress -v [ファイル ファイル]
$ compress -dv * direct.Z: ファイルもディレクトリもありません。 slink.Z: -- slink と置換しました。 tar.txt.Z: -- tar.txt と置換しました。 zip.txt.Z: -- zip.txt と置換しました
$ uncompress -v * direct.Z: ファイルもディレクトリもありません。 slink.Z: -- slink と置換しました。 tar.txt.Z: -- tar.txt と置換しました。 zip.txt.Z: -- zip.txt と置換しました。
$ compress -dv sample.tar.Z sample.tar.Z: -- sample.tar と置換しました。
$ uncompress -v sample.tar.Z sample.tar.Z: -- sample.tar と置換しました
そのファイル自体が置換される? fは強制(圧縮しても小さくならない、ファイルが既に存在する場合も上書き)、vは冗長、dは解凍?
gzip(gunzip) 拡張子: gz, tar.gz, tgz
- 圧縮
- gzip [ファイル ファイル]
$ gzip -rv * direct/ls.txt: 75.2% -- replaced with direct/ls.txt.gz slink: 71.3% -- replaced with slink.gz tar.txt: 71.3% -- replaced with tar.txt.gz zip.txt: 66.7% -- replaced with zip.txt.gz
$ gzip -v sample.tar sample.tar: 72.2% -- replaced with sample.tar.gz
- 解凍
- gzip -d [ファイル ファイル]
- gunzip [ファイル ファイル]
$ gzip -rdv * direct/ls.txt.gz: 75.2% -- replaced with direct/ls.txt slink.gz: 71.3% -- replaced with slink tar.txt.gz: 71.3% -- replaced with tar.txt zip.txt.gz: 66.7% -- replaced with zip.txt
$ gunzip -rv * direct/ls.txt.gz: 75.2% -- replaced with direct/ls.txt slink.gz: 71.3% -- replaced with slink tar.txt.gz: 71.3% -- replaced with tar.txt zip.txt.gz: 66.7% -- replaced with zip.txt
$ gzip -dv sample.tar.gz sample.tar.gz: 72.2% -- replaced with sample.tar
$ gunzip -v sample.tar.gz sample.tar.gz: 72.2% -- replaced with sample.tar
そのファイル自体が置換される? fは強制。vは冗長。dで解凍。
bzip2(bunzip2) 拡張子: bz2, tar.bz2, tbz
- 圧縮
- bzip2 [ファイル ファイル]
$ bzip2 -v * bzip2: Input file direct is a directory. slink: 4.001:1, 1.999 bits/byte, 75.01% saved, 39133 in, 9780 out. tar.txt: 4.001:1, 1.999 bits/byte, 75.01% saved, 39133 in, 9780 out. zip.txt: 3.355:1, 2.384 bits/byte, 70.19% saved, 40835 in, 12171 out.
$ bzip2 -v sample.tar sample.tar: 4.165:1, 1.921 bits/byte, 75.99% saved, 121856 in, 29256 ou t.
- 解凍
- bzip2 -d [ファイル ファイル]
- bunzip2 [ファイル ファイル]
$ bzip2 -dv * bzip2: Input file direct is a directory. slink.bz2: done tar.txt.bz2: done zip.txt.bz2: done
$ bunzip2 -v * bunzip2: Input file direct is a directory. slink.bz2: done tar.txt.bz2: done zip.txt.bz2: done
$ bzip2 -dv sample.tar.bz2 sample.tar.bz2: done
$ bunzip2 -v sample.tar.bz2 sample.tar.bz2: done
そのファイル自体が置換される? fは強制。vは冗長。dで解凍。ディレクトリの下は指定しないとダメ?
圧縮結果(参考)
-rw-r--r-- 1 test test 47784 12月 8日 21:38 sample.tar.Z -rw-r--r-- 1 test test 29256 12月 8日 21:41 sample.tar.bz2 -rw-r--r-- 1 test test 33934 12月 8日 21:21 sample.tar.gz
今回の結果だと、ファイルサイズはおおむね Z > gz > bz2 になっている。