Unixでファイル圧縮・解凍するときに使うコマンドをまとめた

[Unix][備忘録][Solaris]Unixでファイル圧縮・解凍するときに使うコマンドをまとめた

あらすじ

不意に.Zファイルがやってきて解凍の仕方を調べてしまった。あとだいたいオプションを忘れるのでメモ。対象ファイルは以下。

  1. .zip
  2. .Z
  3. .gz
  4. .bz2
  5. .tar.gz
  6. .tgz
  7. .tar.bz2
  8. .tbz
  9. .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 になっている。

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2011/12/12 [Unix] [Shell] [Solaris] ファイルの拡張子を見て適切なコマンドで解凍してくれるスクリプトを組んだ
  2. 2011/12/24 [Unix] 特定のファイルを探したり除外したり(メモ)
  3. 2011/12/23 [Unix] [Vim] Vimコマンドよく使うものと覚えたいコマンドまとめ
  4. 2011/12/22 [Solaris] [Subversion] SolarisにSubversionをインストールするときのメモ
  5. 2011/12/18 [Unix] [Vim] Vimを使い始めるためにインストールから設定まで行った
  6. 2011/12/17 [Unix] Unixでwmvファイルを他のファイルフォーマットに変換したい
  7. 2011/12/16 [Subversion] [Unix] svn infoコマンドでリビジョン番号を抜き出す
  8. 2011/12/15 [Ruby] [Solaris] [Redmine] RedmineとApacheを連携させるPassengerをインストールできなかった
  9. 2011/12/14 [Unix] [さくらVPS] [StartUp] さくらVPSの初期設定メモ
  10. 2011/12/13 [Subversion] [Unix] svn updateコマンド以外でリビジョン番号を抜き出す
  11. 2011/12/10 [Solaris] tarコマンドでzオプションを使わずにファイルを解凍する
  12. 2011/12/08 [Solaris] Solarisで現在のOSバージョンやパッチバージョンを確認する
  13. 2011/12/06 [Unix] UnixでストリーミングファイルをDLしたい
  14. 2011/12/04 [Ruby] [Mac] [Unix] 複数のRuby環境の管理・切替ができるrvmをインストールした
  15. 2011/12/01 [Solaris] DAT装置の使い方 超簡易版(Solaris)