gzipコマンドの使い方 ファイルの圧縮や解凍
スポンサーリンク
このドキュメントの内容は、以下の通りです。
- はじめに
- gzipとは
- gzipの読み方
- gzipコマンドの圧縮方式
- 圧縮ファイルの拡張子
- gzipとgunzipの違い
- gzipの書式
- gzipコマンドのオプション一覧
- 元のファイルを残さずにファイルを圧縮する場合
- 元のファイルを残して圧縮する場合
- 圧縮ファイルを展開する方法
- 複数のファイルを別々に圧縮する方法
- 複数のファイルを別々に展開する方法
- 元の圧縮ファイルを残して展開する方法
- 展開するときに既存ファイルを上書きする方法 -fオプション
- -cオプションには別名があります
- 複数のファイルやディレクトリをまとめて圧縮する場合
- tarコマンドの使い方
- xz圧縮との圧縮率の違い
- xzの使い方
はじめに
ファイルの圧縮は非常に便利です。ものによりますが、大きなファイルが小さくなります。小さくなると何がうれしいかというと、ストレージの消費量が少なくてすみますし、データを転送する場合は、データの転送量が少なくなります。つまり、経済的だということです。Unixでファイルの圧縮や解凍を行う方法について説明します。今回は、gzipとgunzipです。
gzipとは
Unixでファイルの圧縮や解凍には、gzipコマンドがよく利用されます。gzipは、GNU zip の略です。GNUプロジェクトによって、開発・メンテン餡巣が行われています。
圧縮ファイルを元に戻すときには、解凍といわれたり、展開といわれたりします。
圧縮率の高さを重視する場合には、 bzip2 (.bz2) や xz (.xz) などが利用されます。GNU tar 1.22 から xz圧縮(--xzオプション)がサポートされています。
gzipの読み方
gzipの読み方は、 じー・じっぷです。
gunzipの読み方は、 じー・あん・じっぷです。
gzipコマンドの圧縮方式
gzipコマンドは、Lempel-Zivコーディング(LZ77) と呼ばれるアルゴリズムを使用します。
圧縮ファイルの拡張子
拡張子には、 .gzが利用されます。 歴史的には、 gzip の初期には .Zの拡張子を利用していた時代もあります。
gzip は、 tar と一緒に利用されることも多いのではないかと思います。 gzip で圧縮された tarアーカイブの場合、.tar.gz や .tgz になります。
gzipとgunzipの違い
gzip と gunzip には以下の違いがあります。
- gzip は、圧縮と展開に使われます。
- gunzip は、展開に使われます。
Ubuntu の場合だと /bin/gzip と /bin/gunzip がありますが、これは、inode番号が異なります。また、ファイルサイズも異なります。ファイルサイズが大きくことなるため、シェルスクリプトなんだろうな、と思って調べてみると案の定シェルスクリプトでした。
$ file /bin/{gunzip,gzip} /bin/gunzip: POSIX shell script, ASCII text executable /bin/gzip: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1] =c20fb9a4202c4dca13f13860b1be723d28d18c11, stripped
gunzip のシェルスクリプトは、内部的には gzip -d コマンドを実行(exec)するだけのものです。
OS によっても、このように実装方法が異なります。
gzipの書式
gzipコマンドは、以下の書式で利用します。
gzip オプション ファイル
gunzipコマンドは、以下の書式で利用します。
gunzip オプション ファイル
gzipコマンドのオプション一覧
gzipコマンドのオプションは以下の通りです。
オプション | 説明 |
-a | アスキーテキストモードで、非Unixなシステムで、圧縮時に CR LF が LF に変換され、伸長時に LF が CR LF に変換される。 |
-c | 標準出力に書き出し、元のファイルを変更しない |
-d | 伸長する(解凍・展開) |
-f | ファイルが存在しても、強制的に上書きする |
-h | ヘルプを表示する |
-l | 圧縮されたそれぞれのファイルの情報を表示する。圧縮ファイルサイズ、伸長されたファイルサイズ、圧縮率、伸長されたファイル名 |
-n | デフォルトでは、圧縮時に名前とタイムスタンプを保存させない。 |
-N | 圧縮時に名前とタイムスタンプを保存する。 |
-q | すべての警告を抑制する |
-r | ディレクトリを再帰的にアクセスする。 |
-S .suf | 拡張子 .gz の代わり、.suf で指定した拡張子を使う。-S "" で拡張子なしにもできる。 |
-t | 圧縮ファイルの整合性をチェックする |
-v | 詳細を表示する。圧縮・伸長される各ファイルの名前と圧縮率を表示する。 |
-V | バージョン番号とコンパイルオプションを表示して終了する |
-# | #で指定した数字で、圧縮のスピードを変更する。-1は最速の圧縮法を使う。-9は圧縮率が一番高いが一番遅い圧縮法を使う。デフォルトでは-6。 |
元のファイルを残さずにファイルを圧縮する場合
まず、ファイルを圧縮する方法を説明します。ここでは、 a.txt を圧縮します。以下のコマンドラインで gzip コマンドを実行する場合、a.txt がなくなり、a.txt.gz ができます。gzip a.txt
元のファイルを残して圧縮する場合
元のファイルがなくなってしまうのが嫌な場合は、 gzip の -cオプションを使用します。gzipコマンドを実行すると、標準出力に圧縮データが出力されるので、リダイレクトして、別のファイルに書き出します。-cオプションは、標準出力(stdout)に出力するオプション。
gzip -c a.txt > a.gz
圧縮ファイルを展開する方法
a.gz のファイルがあり、これを解凍する例です。以下のコマンドを実行した場合、 a.gz のファイルがなくなるので注意してください。
gzip -d a.gz
gunzipコマンドで展開することもできます。 gunzip は、-d オプションを指定する必要はありません。
gunzip a.gz
複数のファイルを別々に圧縮する方法
例えば、以下のファイル、ディレクトリがあったとします。
./foo ./foo/a.txt ./foo/b.txt ./bar ./bar/c.txt ./bar/d.txt ./1.txt ./2.txt
上記のそれぞれのファイルを1つずつ gzip で圧縮する場合には、以下のコマンドを実行します。 -r オプションは、リカーシブ(再帰的)に実行します。以下のコマンドの場合、カレントディレクトリ以下のファイルたちすべてが対象になります。
gzip -r .
このように、1つ1つの gz ファイルが作成されます。
. ./foo ./foo/a.txt.gz ./foo/b.txt.gz ./bar ./bar/c.txt.gz ./bar/d.txt.gz ./1.txt.gz ./2.txt.gz
複数のファイルを別々に展開する方法
それぞれのファイルを展開する場合には、以下のコマンドを実行します。カレントディレクトリ以下のファイルが解凍されます。gzip -r -d .
元の圧縮ファイルを残して展開する方法
圧縮ファイル a.gz がなくなっては困る場合は、以下のコマンドラインを実行します。gzip コマンドが、展開したデータを標準出力へ出力します。出力されたデータをリダイレクトで、 a.txt ファイルに書き出します。gzip -c -d a.gz > a.txt
展開するときに既存ファイルを上書きする方法 -fオプション
gzip コマンドは、展開するファイルがすでにあるとき、上書きするのか、確認をします。
% gzip -d a.gz gzip: a already exists; do you wish to overwrite (y or n)?
gzip コマンドを -f オプション(force) を指定して実行する場合、何も聞かずに上書きします。
% gzip -f -d a.gz
-cオプションには別名があります
-cオプションは、--stdoutや--to-stdoutと指定することができます。
複数のファイルやディレクトリをまとめて圧縮する場合
複数のファイルやディレクトリを1つのアーカイブにまとめて圧縮したい場合には、 tar コマンドを併用します。圧縮したいファイルが、hoge というディレクトリにある場合は、以下のコマンドで圧縮します。
% tar zcfp hoge.tar.gz hoge
カレントディレクトリに hoge.tar.gz が作成されます。
hoge.tar.gz を解凍する場合には、以下のコマンドを実行します。
tar zxfp hoge.tar.gz
この場合、カレントディレクトリに hoge が作成されます。
hoge.tar.gz に含まれるファイルを確認するには、以下のコマンドを使用します。
% tar ztf hoge.tar.gz
tarコマンドの使い方
ここでは、簡単な tar の使い方を取り上げましたが、より詳しい tarコマンドの使い方については、 [2008-07-09-2] をご参照ください。xz圧縮との圧縮率の違い
xz圧縮方式は、tar.gzに比べて40%のサイズまで圧縮効率が向上しています。
xzの使い方
xzで圧縮する場合には、 -z オプションを利用します。
foo.txt を圧縮する場合は、以下のコマンドを実行します。
以下のコマンドの場合は、gzipコマンドと同様に、圧縮前のファイル foo.txt はなくなります。
xz -z foo.txt
上記を実行した場合、 foo.txt.xz が作成されます。
foo.txt.xz を伸長する場合は、-d オプションを使用します。
xz -d foo.txt.xz
foo.txt が作成され、 foo.txt.xz は削除されます。
圧縮前のファイルを消さずに残す場合には、 gzip コマンドと同様に -c オプションを利用します。 -c オプションを使う場合は、リダイレクトも併用します。
xz -c -z foo.txt > foo.xz
参照しているページ (サイト内): [2008-07-09-2]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12