mzgkworks.com

Stack the little bets.

bashでの圧縮と展開(zip, gz, bz2, xz, tar)

   [Usage]    #bash

圧縮と展開

よく使われる拡張子とコマンド。
圧縮率 : .zip < .gz < .bz2 < .xz

拡張子 圧縮コマンド 展開コマンド
.zip zip unzip
.gz gzip gunzip
.bz2 bzip2 bunzip2
.xz xz xz -d

ファイルの圧縮と展開

基本的な使い方のみ。
zipのみ -r指定で書庫を作らずにディレクトリごと圧縮が可能。

zip

zipは圧縮後のファイル名を指定したり、ディレクトリごとの圧縮を行う。

# archive.zipという名前で、A.txtとB.txtを圧縮
# 圧縮したファイルは残る
$ zip archive A.txt B.txt
$ ls
archive.zip  A.txt  B.txt

# ディレクトリごと圧縮する
$ zip -r archive A_Dir

# workディレクトリ(なければ作成)に展開する
$ unzip -d work archive.zip

gz, bz2, xz

元ファイルは残らない。ディレクトリの圧縮には書庫作成が必要。

# .gz
$ gzip A.txt  # A.txt.gzで圧縮される
$ gunzip A.txt.gz

# .bz2
$ bzip2 A.txt  # A.txt.bz2で圧縮される
$ bunzip2 A.txt.bz2

# .xz
$ xz A.txt  # A.txt.xzで圧縮される
$ xz -d A.txt.xz

ディレクトリの圧縮と展開

ディレクトリを圧縮する際の手順は、

  1. tarコマンドで、複数ファイルを1つのファイルにまとめたアーカイブ(書庫)を作成
  2. 作成したアーカイブを圧縮する

tarコマンドの主なオプション

オプション 説明
- c アーカイブを作成
-x アーカイブを展開
-f アーカイブ名 アーカイブ名
-v 詳細表示
-z gzip圧縮を行う
-j bzip2圧縮を行う
-J xz圧縮を行う
# /etc/postfixディレクトリのアーカイブをカレントディレクトリに作成する
# .tarまで指定すること
$ tar -cvf test.tar /etc/postfix  # test.tarが作成される(作成元は残る)
# test.tarを展開する
$ tar -xvf test.tar

# アーカイブ作成と同時に.gzで圧縮する
$ tar -czvf test.tar.gz /etc/postfix  # test.tar.gzが作成される
# test.tar.gzを展開する(ファイルと違い、test.tar.gzは残る)
$ tar -xzvf test.tar.gz

# アーカイブ作成と同時に.bz2で圧縮する
$ tar -cjvf test.tar.bz2 /etc/postfix  # test.tar.bz2が作成される
# test.tar.bz2を展開する
$ tar -xjvf test.tar.gz

# アーカイブ作成と同時に.xzで圧縮する
$ tar -cJvf test.tar.xz /etc/postfix  # test.tar.xzが作成される
# test.tar.xzを展開する
$ tar -xJvf test.tar.gz