Macとかの雑記帳

TAR などの解凍・圧縮コマンドの使い方まとめ

Linuxで割とお世話になる tar コマンド。これの使い方をよく忘れるので、覚えるために記事にしました。ついでに  zip  rar  gzip  bzip2  xz の使い方と、解凍・圧縮で使いそうなコマンドをまとめて一覧表にしてみました。

zipとrarはファイルの分割や修復などができるので、知っておいて損は無いと思います。それ以外は単体での使い方を知りたかったので備忘録です。

解凍・圧縮コマンドの使い方  目次

  1. 解凍で使いそうなコマンド一覧
  2. 圧縮で使いそうなコマンド一覧
  3. TARとRARのインストール
  4. TARの使い方
  5. TARのオプション
  6. unzipの使い方
  7. unzipのオプション
  8. zipの使い方
  9. zipのオプション
  1. RARの使い方
  2. RARのオプション
  3. gzipの使い方
  4. gzipのオプション
  5. bzip2の使い方
  6. bzip2のオプション
  7. xzの使い方
  8. xzのオプション
  9. 圧縮形式による違い
注意!
この記事のTARコマンドに関する部分は GnuTar 1.26 での内容になります。Snow Leopard 以降のMacなどで使われてるBsd Tarでは、サポートされていない機能も含まれてます。

解凍で使いそうなコマンド一覧

赤字部分に解凍、展開するファイル名を入れます。

圧縮形式 拡張子 解凍コマンド
tar + 色々な形式
※.1
〜.tar
~.tgz
~.tar.gz
~.tar.bz2
~.tbz
〜.tbz2
〜.tar.xz
〜.tar.lzma
〜.tlz
〜.tar.Z
tar xvf file
tar + gzip 形式 ~.tgz
~.tar.gz
古いtarの場合。
tar zxvf file.tar.gz

かなり古いtarの場合。
gzip -dc file.tar.gz | tar xvf -
tar + bzip2 形式 ~.tar.bz2
~.tbz
〜.tbz2
古いtarの場合。
tar jxvf file.tar.bz2

かなり古いtarの場合。
bzip2 -dc file.tar.bz2 | tar xvf -
tar + xz 形式 〜.tar.xz
〜.tar.lzma
〜.tlz
古いtarの場合。
tar Jxvf file.tar.xz

かなり古いtarの場合。
xz -dc file.tar.xz | tar xvf -
TAR 形式 ~.tar tar xvf file.tar
ZIP 形式 ~.zip unzip file.zip
RAR 形式 〜.rar rar x file.rar

unrar x file.rar
gzip 形式 ~.gz gunzip file.gz

gzip -d file.gz
bzip2 形式 ~.bz2 bunzip2 file.bz2

bzip2 -d file.bz2
xz 形式 〜.xz
〜.lzma
unxz file.xz

xz -z file.xz

※.1:GNU、BSDともに、最近のtarは圧縮形式を自動で判別して解凍してくれます。

目次に戻る

圧縮で使いそうなコマンド一覧

赤字部文に圧縮後のファイル名を。青字部分に圧縮、アーカイブ化するファイル名を入れます。

圧縮形式 拡張子 圧縮コマンド
tar + gzip 形式 ~.tgz
~.tar.gz
tar zcvf hoge.tar.gz file1 file2
tar + bzip2 形式 ~.tar.bz2
~.tbz
~.tbz2
tar jcvf hoge.tar.bz2 file1 file2
tar + xz形式 〜.tar.xz
〜.tar.lzma
〜.tlz
tar Jcvf hoge.tar.xz file1 file2
TAR 形式 ~.tar tar cvf hoge.tar file1 file2
ZIP 形式 ~.zip zip -r hoge.zip file1 file2
RAR 形式 〜.rar rar a hoge.rar file1 file2
bzip2(BZ2) 形式 ~.bz2 bzip2 file
gzip(GZ) 形式 ~.gz gzip file
xz 形式 〜.xz
〜.lzma
xz file

解凍・圧縮する時に、詳細を表示したくない場合

  • TAR : -vをつけないで実行
  • ZIP: -qをつけて実行
  • RAR : -inulをつけて実行

目次に戻る

TAR と RAR のインストール

MacにGnuTarを入れる

MacでGnuTarを使う場合はhomebrewなどで入れます。

$ brew install gnu-tar --default-names

ちなみに、10.5 LeopardまでGnuTarが標準で使われてました。その名残りなのか、Mountain Lionにも /usr/binにGnuTarが入ってます。

$ gnutarと打つか、リンクを貼りなおせば使えますが、バージョンが古いのでお勧めはしません。

UbuntuのTARを最新版に入れ替える

普段使ってるUbuntu(10.04)のtarが妙に古かったのでメモ。

最新版を使う場合はLaunchpadで適当なリポジトリを漁って追加するか…

$ sudo add-apt-repository ppa:dns/gnu

$ sudo apt-get update

$ sudo apt-get upgrade

自力で入れ替えます。

$ wget http://ftpmirror.gnu.org/tar/tar-1.26.tar.gz

$ tar xfz tar-1.26.tar.gz

$ cd tar-1.26.tar.gz

$ ./configure

$ make 

$ sudo make install

RAR

解凍のみの$ unrar  と、圧縮もできる  $ rar  の2種類あります。前者はフリーウェアですが、後者は40日の試用期間つきシェアウェアです。

Ubuntuにrarやunrarを入れる場合はaptで入れます。

$ sudo apt-get install unrar

$ sudo apt-get install rar

Macの場合、unrarならhomebrewなどで。

$ brew install unrar

rarを使いたい場合は以下から体験版が入手できます。

tar_howto07

WinRAR and RAR archiver downloads

一緒にWindows版のWinRARも落としておくと、中に日本語のマニュアルが入っているので重宝します。

目次に戻る

TAR の使い方

TARTape ARchiveの略で、元々テープメディアのためのコマンドです。デフォルトでは /dev/rmt0(テープデバイス)にアクセスするので、f でファイルを指定する必要があります。

tar の使い方

本来のtarは複数のファイルをまとめたアーカイブ(書庫)を作成するのみで圧縮は行いません。圧縮したい場合は、zjJ などをつけて圧縮形式を指定します。

アーカイブの解凍(抽出)

解凍にはxを使います。extract(抽出)の x と覚えとくといいと思います。

私の場合はですが、「解凍するコマンド」+「圧縮形式」と入れた方が覚えやすかったので、$ tar xvfと入れ、圧縮形式に応じてオプションを追加してます。

## tarアーカイブ
$ tar xvf ファイル名.tar

## gzipで圧縮されたtarアーカイブ
$ tar xvfz 解凍するファイル.tar.gz

## bzip2で圧縮されたtarアーカイブ
$ tar xvfj 解凍するファイル.tar.bz2

## xzで圧縮されたアーカイブ
$ tar xvfJ 解凍するファイル名.tar.xz

最近のtarは形式指定なしで解凍できますが、古いtarに遭遇したとき困るので指定するようにしてます。

アーカイブの作成

アーカイブの作成にはcを使います。create の cと覚えとくといいと思います。

解凍と同じように、とりあえず $ tar cvfと入れ、圧縮したい形式に応じてオプションを追加してます。

## tarアーカイブの作成
$ tar cvf ファイル名.tar

## gzipで圧縮
$ tar cvfz 圧縮後のファイル名.tar.gz 圧縮するファイル1, 2 …

## bzip2で圧縮
$ tar cvfj 圧縮後のファイル名.tar.bz2 圧縮するファイル1, 2 …

## xzで圧縮
$ tar cvfJ 圧縮後のファイル名.tar.xz 圧縮するファイル1, 2 …

アーカイブの内容を一覧表示

アーカイブ内のファイルを確認するにはtを使います。listt と覚えとくといいと思います。

先に中身を確認しておくと、「解凍したらファイルをぶちまけられた」ということが無くなるので安全です。

## アーカイブの内容を一覧表示
$ tar tf ファイル

展開先のディレクトリを指定

C(大文字の C)をつけると、展開先を任意のディレクトリに指定できます。

## 展開先のディレクトリを指定
$ tar xvfC 解凍するファイル.tar 展開先のディレクトリ

バックアップを作成

--backupをつけると、同名のアーカイブが既にあった場合に上書きせずバックアップを作成します。

## バックアップを作成
$ tar --backup -cvf ファイル名.tar ファイル1, 2 …

--backup=numberedとすると、バックアップしたファイル名の末尾に番号をつけてくれます。

## 番号つきバックアップファイルを作成
$ tar --backup=numbered -cvf ファイル名.tar ファイル1, 2 …

アーカイブに追加後ファイルを削除

--remove-filesをつけると、アーカイブに追加した後、元のファイルを削除します。

## アーカイブに追加後ファイルを削除
$ tar --remove-files -cvf ファイル名.tar ファイル1, 2

特定のファイルなどを除外

--excludeをつけると、アーカイブ作成時に、指定したファイルやディレクトリを除外します。例として、以下のような「aaa」というディレクトリがあったとします。

tar ファイル除外 1

ここから特定のファイルを除外するには--exclude=aaa/bbb/bbb.txtのように指定して実行します。

## aaa/bbb/bbb.txtを除外
$ tar --cxclude=aaa/bbb/bbb.txt -cf aaa.tar .

最後の「 . 」ドットはカレントディレクトリのことです。

--exclude=bbb.txtと、ファイル名のみ指定すると、全ての「bbb.txt」ファイルを除外してアーカイブを作成します。

## bbb.txtを除外
$ tar --exclude=bbb.txt -cf aaa.tar .

tar_how_to08

ディレクトリを指定して除外する場合は--exclude=aaa/bbbのようにします。/aaa/bbbaaa/bbb/のように、先頭や末尾に「/」をつけると除外しないようなので注意してください。

## bbbディレクトリを除外
$ tar --exclude=aaa/bbb -cf aaa.tar .

tar_how_to09

正規表現が使えるので--exclude='*/.*'と指定すると、.DS_Storeなどの不可視ファイルを全て除外してくれます。

## 不可視ファイルを除外
$ tar --exclude='*/.*' -cf aaa.tar .

複数のパターンを指定するこもできます。

## 複数指定
$ tar --exclude='*/.*' --exclude='bbb/*[b,c].txt' -cf aaa.tar aaa

上は、ドットで始まるファイルと、bbbディレクトリ以下にある、〜b.txt または 〜c.txt で終わるファイルを除外します。

tar_how_to11

除外パターンをファイルから読み込む

-X(大文字の X)をつけると、ファイルからパターンを読み込むことができます。複数の除外パターンを指定したい場合に便利です。

aaa/aaa.txt
*/.*
bbb/*[b,c].txt

例として上の内容のファイルをtar-exclude.listという名前で作成し、以下のように実行します。

## 除外パターンをファイルから読み込む
$ tar cf aaa.tar aaa -X tar-exclude.list

目次に戻る

TAR のオプション(機能指定文字)

「機能指定文字」は、必ず指定しなければならないオプションです。以下8つのオプションのうち、いずれかを指定しないと機能しません。

オプション 説明
-x
--extract
--get
tarファイルを解凍。
-c
--create
tarファイルを作成。
-A
--catenate
--concatenate
既存のtarアーカイブの中に、別のtarアーカイブを追加。
-t
--list
アーカイブの内容を一覧表示。

$ tar tvf ファイルと -v をつけるとアクセス権や
所有者、グループも表示。
-r
--append
指定したファイルをアーカイブの最後に追加。
-d
--diff
--compare
アーカイブ内のファイルと、実際のファイルの差分
を表示。
--delete アーカイブ内の指定したファイルを削除。
-u
--update
アーカイブ内の同名のファイルより、新しいものが存在
する場合、それを追加。

TAR のオプション(その他)

オプション 説明
-z
--gzip
--ungzip
gzip形式を利用して圧縮、解凍。
-j
--bzip2
bzip2形式を利用して圧縮、解凍。
-J xz形式を利用して圧縮、解凍。
-f
--file
(テープの代わりに)作成、解凍するファイルを指定。
-C 指定したディレクトリにファイルを展開。
-p 解凍時に元のアクセス権を保持。
--backup 同じ名前のアーカイブがある場合は、
上書きせずにバックアップを作成。

--backup=numberedと指定すると末尾に番号をつける。
--remove-files アーカイブ追加後にファイルを削除。
-v
--verbose
詳細を表示。
--exclude= アーカイブ作成時に除外したいパターンを指定。
-X 除外パターンをファイルから読み込む。

目次に戻る

ZIP と unzip の使い方

zipファイルの作成には$ zipを。解凍には$ unzipを使います。

unzip の使い方

基本的な使い方は、以下のように解凍したいファイルを指定するだけです。

## zipファイルの解凍
$ unzip 解凍したいファイル.zip

展開するディレクトリを指定

-dをつけると、解凍先のディレクトリを任意の場所に指定できます。

## 展開するディレクトリを指定
$ unzip 解凍するファイル.zip -d 展開するディレクトリ

zipファイルの中を一覧表示

-l、または-Zをつけるとzipファイルの中を表示します。

## zipの中を一覧表示
$ unzip -l ファイル.zip

Archive:  ファイル.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  09-02-12 08:34   ファイル/
       38  09-02-12 08:34   test/README.md
    22598  09-02-12 06:47   test/test.css
  3432010  09-02-12 22:04   test/test.html
 --------                   -------
  3454646                   4 files

-Zの場合、アクセス権や圧縮前後のサイズ、削減率も表示してくれます。これは$ zipinfoというコマンドと同じ動作になります。

## zipの中を詳細表示
$ unzip -Z ファイル.zip

Archive:  ファイル.zip   809034 bytes   4 files
drwxr-xr-x  3.0 unx        0 bx stor  2-Sep-12 08:34 ファイル/
-rw-r--r--  3.0 unx       38 tx defN  2-Sep-12 08:34 test/README.md
-rw-r--r--  3.0 unx    22598 tx defN  2-Sep-12 06:47 test/test.css
-rw-r--r--  3.0 unx  3432010 tx defN  2-Sep-12 22:04 test/test.html
4 files, 3454646 bytes uncompressed, 808408 bytes compressed:76.6%

展開済みのファイルをスキップ

-nをつけると、展開済みのファイルをスキップし、存在しないファイルのみ展開します。

## 展開済みファイルをスキップ
$ unzip -n 解凍するファイル.zip

zipファイルの展開テスト

-tをつけると、zipファイルの展開テストを行い、破損してるファイルがないかチェックすることができます。

## zipファイルの展開テスト
$ unzip -t ファイル.zip

Archive:  ファイル.zip
    testing: test/                    OK
    testing: test/README.md           OK
    testing: test/test.css            OK
    testing: test/test.html           OK
No errors detected in compressed data of ファイル.zip.

目次に戻る

unzip のオプション

オプション 説明
-d 展開先のディレクトリを指定。
-t 解凍のテストを実施。
-n 展開済みのファイルをスキップ。
-Z ZIPファイル内の情報を表示。

$ zipinfoと同等。
-l ZIPファイル内の情報を、短い表示方式で表示。
-c 標準出力にZIPファイの内容を表示。
-z ZIPファイルのコメントを表示。

目次に戻る

ZIP の使い方

基本的な使い方は tar と同じです。

## ファイルを圧縮
$ zip 圧縮後のファイル名.zip 圧縮するファイル1, 2

作成済みのzipファイルに再度$ zipを実行すると、以下のような動作をします。

  • 新しくファイルを指定した場合は、それを追加
  • 格納済みのファイルを指定した場合は、最新の内容に更新

フォルダを圧縮

-rをつけると、フォルダを再帰的に圧縮します。ファイルなどが入っているフォルダを圧縮する際に使います。

## フォルダを再帰的に圧縮
$ zip -r 圧縮後のファイル名.zip 圧縮するフォルダ

-r をつけずに実行すると空のフォルダのみ格納され、中のファイルを格納してくれません。

パスワードつきzipファイルを作成

-eをつけると、パスワードつきzipファイルを作成します。

## ZIPでパスワードつきファイルを作成
$ zip -e 圧縮後のファイル名.zip 圧縮するファイル

Enter password: (パスワードを入力)
Verify password: (もう一度パスワードを入力)

破損したzipファイルの修復

-Fまたは--fixをつけると、一部破損したzipファイルの修復を試みます。

## zipファイルの修復
$ zip -F 修復したいファイル.zip --out 修復後のファイル名.zip

ファイルの損傷が大きい場合は-FFまたは--fixfixというオプションを使います。

圧縮速度を指定

-0〜9の数字を指定すると、圧縮にかかる時間を調整することができます。

0が最速で圧縮無し。9が最も遅く、高圧縮でzipを作成してくれます。デフォルト値は6です。

## 圧縮速度を指定
$ zip -9 圧縮後のファイル名.zip 圧縮するファイル

ZIPファイルの分割と結合

-s数字をつけると、分割されたzipファイルを作成することができます。

## 分割ファイルを作成
$ zip -s60 -r 圧縮後のファイル名.zip 圧縮するファイル

## 既存のzipを分割
$ zip -s60 分割するファイル.zip --out 分割後のファイル名

上の場合60メガバイトごとに分割されます。数字の部分は以下の単位を指定できるようです。

  • k  キロバイト単位
  • m  メガバイト単位
  • g  ギガバイト単位
  • t  テラバイト単位

分割すると、拡張子が.z数字.zipの2種類のファイルが作成されます。

アプリを使う場合は、.zipのファイルを選べば結合と解凍を勝手にやってくれるはずです。

コマンドで結合するときも.zipのファイルを使います。下のように-s0をつけて実行します。

## 分割されたzipを結合
$ zip -s0 分割されたファイル名.zip --out 結合後のファイル名.zip

目次に戻る

ZIP のオプション

オプション 説明
-d ZIPファイルの中にある指定したファイルを削除。
-m 指定したファイルをZIPファイルの中に移動。
元のファイルは削除される。
-u 変更されたファイルや、新しいファイルのみアップデート。
-q 処理状況を表示しない。
-0~9 圧縮速度を0〜9で指定。
数字が大きいほど圧縮率は上がるが、速度は遅くなる。
デフォルト値は6。
0を指定すると圧縮無しのZIPファイルを作成する。
-r ディレクトリを再起的に圧縮。
-F
-fix
一部破損しているzipファイルの修復を試みる
-FF
--fixfix
損傷が大きいファイルの修復を試みる。
-e ZIPファイルを暗号化し、パスワードを追加。
-s# 分割された圧縮ファイルを作成。
-l 改行コードを LF から CR+LF に変更。
-ll 改行コードを CR+LF から LF に変更。
-z 作成するZIPファイルにコメントを付ける。
-c 圧縮される、それぞれのファイルにコメントを追加。
-t 指定した日付以降のファイルを対象にする。
-tt 指定した日付以前のファイルを対象にする。

目次に戻る

RAR の使い方

rarファイルを解凍

解凍にはxを使います。これも extractのxと覚えとくと良いと思います。

## rar形式のファイルを解凍
$ unrar x ファイル.rar
$ rar x ファイル.rar

解凍に使うオプションでeというのもあります。これを指定するとサブディレクトリを作成せずに展開します。つまり「ファイルをぶちまける」状態になります。

新規rarファイルの作成、ファイルの追加

新規rarファイルの作成と、既存のrarへのファイル追加、どちらもaオプションを使います。addのaと覚えとくと良いと思います。

## 新規作成、またはファイルの追加
$ rar a 圧縮後のファイル名.rar 圧縮するファイル1, 2

圧縮するファイルを指定しなかった場合、カレントディレクトリにある全てのファイルが圧縮されます。このときフォルダは含まれません。

サブフォルダも含んでrarファイルを作成

-rをつけると、カレントディレクトリにある全てのファイルとサブフォルダを圧縮します。

## フォルダごとファイルをアーカイブ
$ rar a -r 圧縮後のファイル名.rar

パスワードつきのrarファイルを作成

-pをつけると、パスワードつきのrarファイルを作成します。

## パスワードつきで作成
$ rar a -p ファイル名.rar fiel1, file2

Enter password (will not be echoed): (設定するパスワードを入力)
Reenter password: (もう一度パスワードを入力)

分割されたrarファイルを作成

-v数字をつけて実行すると、指定したサイズごとに分割されたrarファイルを作成します。

## 指定したサイズごとに分割
$ rar a -v1024 圧縮後のファイル名.rar 圧縮するファイル

上の場合1024キロバイトごとに分割されます。数字の部分は以下の単位を指定することもできます。

  • k  キロバイト単位
  • b  バイト単位
  • m  メガバイト単位
  • M  1,000,000バイト単位
  • g  ギガバイト単位
  • G  1,000,000,000バイト単位

-vを複数指定して、それぞれ異なるサイズを指定することもできます。

## 異なるサイズを指定
$ rar a -v1.5m -v2m -v2.5m 圧縮するファイル

上の場合、1番目のファイルは1.5メガバイト、2番目が2メガバイト、3番目が2.5メガバイトになります。

分割したファイルを元に戻す場合は、下のようにファイルが全てそろっている状態で、どれか1つ解凍するだけです。

結合と解凍を自動でやってくれます。zipみたいに面倒なことをする必要はないです。

破損したrarファイルを修復

rをつけると、破損したrarファイルの修復を試みます。

## 破損したrarファイルを修復
$ rar r 破損したファイル.rar

リカバリレコードを追加

rrをつけると、rarファイルに「リカバリレコード」と呼ばれる特殊なデータを追加します。圧縮ファイルの一部が破損した場合にリカバリレコードを用いてファイルを修復することができます。

## リカバリレコードを追加
$ rar rr ファイル名.rar
$ rar a -rr 圧縮後のファイル名.rar 圧縮するファイル  

rr数値とすることで追加するリカバリレコードのサイズを指定するこもできます。1〜524288(セクタ)の数字、またはrr5%と % で指定します。

リカバリレコードを追加してもダメなときはダメなので注意してください。

全ての質問をyesで答える

-yをつけると、問いかけに全てyesで答えます。例えば展開先に同じ名前のファイルがあると、どうするか聞いてきますが…

rar

-yをつけると全てyesで実行してくれます。

## 全てyesで答える
$ unrar x -y 解凍するファイル.rar
$ rar x -y 解凍するファイル.rar

既存のファイルを上書きしない

-o-(小文字のオー)をつけると、展開先に同じファイルがあっても上書きしないようにします。

## 既存のファイルを上書きしない
$ unrar x -o- 解凍するファイル.rar
$ rar x -o- 解凍するファイル.rar

既存のファイルを全て上書き

上の逆です。-o+をつけると、展開先に同じ名前のファイルがあっても全て上書きします。

## 既存のファイルを全て上書き
$ unrar x -o+ 解凍するファイル.rar
$ rar x -o+ 解凍するファイル.rar

目次に戻る

RAR のオプション

オプション 説明
-? ヘルプを表示。
a アーカイブにファイルを追加。
c アーカイブにコメントを追加。
d アーカイブ内の指定したファイルを削除。
e サブディレクトリを作成せず、
カレントディレクトリに展開。
x フルパスで展開。
f 指定したファイルが、アーカイブ内のものより
新しい場合は更新。
rn アーカイブ内のファイル名を変更。
t アーカイブの展開テストを実施。
実際に展開はしない。
u アーカイブの更新。
l アーカイブの内容を一覧表示。
v アーカイブの内容を一覧表示。
アクセス権なども表示する。
-r カレントディレクトリ圧縮の際にサブディレクトリも含む。
-r 破損したrarファイルの修復を試みる。
rr リカバリレコードを追加。
-y 全ての質問にyesで答える。
k 圧縮ファイルをロック。
アーカイブ内を編集不可にする。
-o- 展開時に同じ名前のファイルがあっても、
上書きせずスキップ。
-o+ 展開時に同じ名前のファイルがあったら、
上書き。
-p パスワードつきのアーカイブを作成。
-v# 分割された圧縮ファイルを作成。
m0〜5 圧縮レベルの指定。

m0が最低値で、m5が最大。
デフォルトはm3
-df 圧縮後に元のファイルを削除。

目次に戻る

gzip の使い方

圧縮ファイルを作成する$ gzip、ファイルを解凍する$ gunzip、圧縮ファイルを解凍して標準出力に書き出す$ zcatと、役割の違う3つのコマンドがあるのですが、ハードリンクされているだけでファイルの実態は同じです。

どの名前で起動したかによって動作を変えていますが、どれで起動してもオプションを指定すれば全ての機能を実行できます。

なので、以下のどちらでもファイルを解凍できます。

## 圧縮ファイルを解凍
$ gunzip ファイル.gz
$ gzip -d ファイル.gz

標準出力への書き出しも、以下のどちらでも実行可能です。

## 標準出力へ書き出す
$ zcat ファイル.gz
$ gzip -dc ファイル.gz

gzip で圧縮ファイルを作成

引数にファイルを指定すれば圧縮してくれます。

## 圧縮ファイルを作成
$ gzip 圧縮したいファイル

gzipには複数のファイルを1つにまとめてアーカイブ化する機能は備わってません。複数のファイルを指定すると1つずつ圧縮されたファイルを作成します。後述する$ bzip2$ xzも同じです。

## 複数のファイルを指定
$ gzip test1.txt test2.txt

元の状態。

gzip test

 

コマンド実行後。

gzip test

フォルダ内のファイルを圧縮

-rをつけると、圧縮するファイルにフォルダを指定することができます。フォルダ内で見つかったすべてのファイルを圧縮します。

以下のようになっているtestというフォルダを$ gzip -rで圧縮すると…

tar_how_to02

 

各階層にあるファイルが圧縮されます。

tar_how_to03

目次に戻る

gzip のオプション

オプション 説明
-d
--decompress
--uncompress
指定した圧縮ファイルを解凍。
-1~9
--fast
--best
圧縮速度を指定。
-1または--fastは最も早いが、圧縮率は低い。
-9または--bestは最も遅いが、圧縮率は高い。
デフォルトは-6
-l
--list
圧縮ファイルの情報を表示。

圧縮する前後のサイズ、圧縮率、fileを表示。
-r
--recursive
指定したディレクトリ及び、その下の階層にある
ファイルを圧縮。
-t
--test
圧縮ファイルの整合性をチェックする。
-q
--quiet
警告の表示を抑制する。致命的なエラーは抑制されない。
-n
--no-name
圧縮時に元のfileと、タイムスタンプ
を保存しない。
-N
--name
圧縮時に元のfileとタイムスタンプを保存。

デフォルトで有効になっている。
fileの長さに制限があるシステムや、何らかの
原因でタイムスタンプが失われた場合に使用。
-c
--stdout
処理結果を標準出力に書き出す。
-v
--verbose
詳細を表示。

目次に戻る

bzip2 の使い方

gzip同様に、$ bzip2$ bunzip2$ bzcatとありますが、オプションを指定すれば全ての機能を実行できます。

ファイルを解凍

-dをつけてファイルを解凍します。

## 圧縮ファイルを解凍
$ bzip2 -d 解凍したいファイル.bz2
$ bunzip2 解凍したいファイル.bz2

ファイルを圧縮

引数に圧縮したいファイルを指定します。$ bunzip -zと実行しても圧縮します。

## ファイルを圧縮
$ bzip2 圧縮したいファイル
$ bunzip2 -z 圧縮したいファイル

圧縮、解凍後にファイルを削除しない

圧縮、解凍すると元のファイルは削除されますが、-kオプションを付けると削除されないようになります。

## 処理後にファイルを削除しない
$ bzip2 -k ファイル
$ bzip2 -dk ファイル.bz2

目次に戻る

bzip2 のオプション

オプション 説明
-z
--compress
起動されたコマンド名に関係なくファイルを圧縮。
-d
--decompress
ファイルの解凍。
これも起動されたコマンド名に関係なく解凍する。
-t
--test
指定されたファイルの完全性をチェックする。
-c
--stdout
結果を標準出力に書き出す。
-k
--keep
解凍、圧縮後に、元のファイルを削除しない。
-s
--small
圧縮・解凍・テストの際のメモリ使用量を減らす。
-1〜9 圧縮時のブロックサイズを100KB〜900KBに設定。
デフォルトは -9(900KB)
-q
--quiet
警告の表示を抑制する。
致命的なエラーは抑制されない。
-v
--verbose
詳細を表示。
-v の数を増やすと詳細表示のレベルが上がる。
主に診断を目的とする多くの情報を書き出す。

目次に戻る

xz(lzma)の使い方

gzipやbzip2と同様、$ xz$ unxz$ xzcatとありますが、xz+オプションで済みます。

ファイルを解凍

-dをつけるとファイルを解凍します。

## 圧縮ファイルを解凍
$ xz -d 解凍したいファイル.bz2

ファイルを圧縮

引数に圧縮したいファイルを指定します。また、$ unxz -zと実行しても圧縮します。

## ファイルを圧縮
$ xz 圧縮したいファイル
$ unxz -z 圧縮したいファイル

圧縮、解凍後にファイルを削除しない

圧縮、解凍すると元のファイルは削除されますが、-kオプションを付けると削除されないようになります。

## 処理後にファイルを削除しない
$ xz -k ファイル
$ unxz -dk ファイル.bz2

目次に戻る

xz のオプション

オプション 説明
-z
--compress
起動されたコマンド名に関係なくファイルを圧縮。
-d
--decompress
ファイルの解凍。
これも起動されたコマンド名に関係なく解凍する。
-t
--test
指定されたファイルの完全性をチェックする。
-l
--list
圧縮ファイルの中を一覧表示。
-k
--keep
解凍、圧縮後に、元のファイルを削除しない。
-f
--force
解凍するファイルと同じ名前のファイルがあった場合、
上書きする。
-0〜9 -0は最も早いが、圧縮率は最低。
-9は最も遅いが、圧縮率が高い。
デフォルトは -6
-e
--extreme
圧縮率を更に上げようとしてくれる。
-q
--quiet
警告の表示を抑制する。
致命的なエラーは抑制されない。
-v
--verbose
詳細を表示。
-v の数を増やすと詳細表示のレベルが上がる。
主に診断を目的とする多くの情報を書き出す。
-h
--help
ヘルプを表示。
-H
--long-help
詳細なヘルプを表示。
-V
--version
バージョンを表示。

目次に戻る

圧縮形式による違い

圧縮形式によって何が違うのか気になったので簡単にテストしてみました。

下はgcc-4.7.1.tar  (527,104,000バイト)を使い、圧縮と解凍、それぞれ3回実施してユーザー時間の平均値を求めたものです。

gcc-4.7.1.tar.gzを一度解凍してtarボールにしたもの。

圧縮形式 圧縮後のサイズ 圧縮率 所要時間(圧縮) 所要時間(解凍)
zip 107,313,569バイト 20.4% 43.17秒 7.19秒
gzip 107,313,423バイト 20.4% 43.38秒 7.23秒
rar 76,511,617バイト 14.5% 3分46.96秒 10.57秒
bzip2 82,558,974バイト 15.7% 3分48.33秒 53.63秒
xz 66,960,916バイト 12.7% 12分39.67秒 17.06秒

検証環境:Ubuntu 10.04 Desktop | Intel Celeron M410  1.46GHz | メモリ 1.5GB

この結果をどう受け止めるかは人それぞれだと思いますが、使用環境や用途によって使い分けると良いんじゃないでしょうか。

参考リンク:
Linux OS 上での解凍・圧縮方法(コピペで使えるtarコマンド等)
アーカイブにゴミや見せたくないファイルを入れない方法 - 檜山正幸のキマイラ飼育記
LZMA圧縮されたファイルの扱いについて - 試験運用中なLinux備忘録

スポンサード リンク