【Linux】gzipコマンドとzipの違いとは?圧縮方法の種類/xz/bzip2
この記事からわかること
- Linux:gzipとは?
- 基本的なコマンドの使い方と圧縮 /解凍方法
- ファイルやディレクトリの圧縮
- zipとの違い
- bzip2とxzについて
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
ファイルを圧縮をするメリット
ファイルをやり取りをするときなどに容量が大きいと読み込みに時間が掛かったり、メモリを食ってしまったりと何かと不都合が生じやすいです。
ファイルを圧縮して容量を小さくする事で取り扱いやすくし、円滑に作業を進められるようにと様々な圧縮形式が用いられています。
Linuxでも以下のような圧縮形式を扱うことができます。
圧縮形式の種類
- gzip
- zip
- bzip2
- xz
どの圧縮形式もファイル(またはディレクトリ)を圧縮して容量を小さくするという役割は変わりません。
gzipコマンドの使い方
- 拡張子:「.gz」
- 圧縮コマンド:$ gzip ファイル名
- 解凍コマンド:$ gunzip ファイル名
gzip(GNU zip:ジージップ)はファイルのみを圧縮できる圧縮形式です。ディレクトリは圧縮できませんが比較的単純なアルゴリズムが用いられているので高速で圧縮することができます。
圧縮するにはgzip
コマンドの引数に圧縮したいファイル名を指定するだけです。実行すると元ファイルは削除され圧縮された拡張子「.gz」付きのファイルが作成されます。
$ gzip sample.txt
$ ls
sample.txt.gz
解凍するにはgunzip
コマンドを使います。引数に解答したい圧縮ファイル名を渡します。圧縮時と同様に元圧縮ファイルは削除され、解凍されたファイルが作成されます。
$ gunzip sample.txt.gz
$ ls
sample.txt
元ファイルを残しておきたい場合はgzip/gunzip
コマンドのオプションに-c
を付けます。引数のファイル名は>
を使って圧縮前と解凍後の両方を指定します。
$ gzip -c sample.txt > sample.gz
$ gunzip -c sample.gz > sample.txt
ディレクトリの圧縮には対応しておらずエラーになるので注意してください。
$ gzip image
gzip: image is a directory
gzip/gunzipのオプション一覧
gzipのオプション
オプション | 役割 |
---|---|
c (--stdout) | 標準出力へ出力する |
d (--decompress) | 解凍 |
n (--no-name) | 元の名前とタイムスタンプを保存または復元しない |
N (--name) | 元の名前とタイムスタンプを保存または復元する |
r (--recursive) | 再帰的にディレクトリ上で動作 |
S (--suffix=接尾辞) | 圧縮ファイルに接尾辞を指定 |
1 (--fast) | 速度重視の圧縮 |
9 (--best) | 圧縮率重視の圧縮 |
gunzipのオプション
オプション | 役割 |
---|---|
c (--stdout) | 元ファイルを残す |
n (--no-name) | 元の名前とタイムスタンプを保存または復元しない |
N (--name) | 元の名前とタイムスタンプを保存または復元する |
r (--recursive) | 再帰的にディレクトリ上で動作 |
S (--suffix=接尾辞) | 圧縮ファイルに接尾辞を指定 |
ディレクトリをgzipで圧縮する方法
ファイルの圧縮はgzip
コマンドでしたがディレクトリを圧縮するにはtar
コマンドを使用したあとにgzip
コマンドを実行しなければいけません。
tar
コマンドは圧縮ではなくディレクトリ内のファイルやサブディレクトリを1つのファイルにまとめるコマンドです。まとめられたファイルのことをアーカイブ(書庫)と呼びます。tar
コマンドでアーカイブを作成する時はオプション-cvf
をつけます。
アーカイブを作成して圧縮
$ tar -cvf imgarchive.tar image // アーカイブを作成
$ gzip imgarchive.tar // 圧縮
$ ls
imgarchive.tar.gz
アーカイブを展開して解凍
アーカイブを展開するにはtar
コマンドのオプションにxvf
を指定します。tar
コマンドのオプションは「-
」を省略してもOKです。
$ tar xvf imgarchive.tar // 展開
tarコマンドの圧縮オプション
実はアーカイブを作成するtar
コマンドにはgzip形式の圧縮を行えるオプションが備わっています。指定するだけでアーカイブ作成と圧縮までを一気に行うことも可能です。
$ tar -czvf imgarchive.tar image
$ ls
imgarchive.tar.gz
オプション | 役割 |
---|---|
c | アーカイブを作成 |
x | アーカイブを展開 |
v | 結果を表示 |
f | ファイルを指定 |
j | bzip2形式(※)の圧縮 |
J | xz形式(※)の圧縮 |
z | gzip形式の圧縮 |
※:bzip2/xz形式の圧縮については後述しています。
zip形式の圧縮コマンドの使い方
- 拡張子:.zip
- 圧縮コマンド:$ zip [オプション] 圧縮ファイル名 ファイル名
- 解凍コマンド:$ unzip ファイル名
親しみのあるzip形式の圧縮もコマンドラインから操作が可能です。zip形式の圧縮はファイルやディレクトリの区別がなく全て圧縮できるのがメリットです。圧縮時には何%圧縮されたかが表示されます。
$ zip sample.zip sample.txt
adding: sample.txt (stored 70%)
解凍するにはunzip
コマンドを使用します。実行すると「replace sample.sh?」と聞かれるので上書きしたければy
を入力します。
$ unzip sample.zip
Archive: sample.zip
replace sample.sh? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
extracting: sample.sh
zip形式のコマンドでは圧縮時/解凍時は元ファイルも削除されず残ります。
ディレクトリを圧縮する場合はオプション-r
を使用します。
$ zip -r image.zip image
adding: image/ (stored 0%)
adding: image/slide-1.jpg (deflated 1%)
adding: image/slide-2.jpg (deflated 2%)
adding: image/slide-3.jpg (deflated 0%)
adding: image/slide-4.jpg (deflated 1%)
gzipとzipの違い
gzipとzipの違いは単に圧縮形式の違いで、細かい違いはありますが使用用途は同じです。しかしLinuxのディストリビューションによってはzipコマンドが入っていない場合もあるので注意してください。
gzip | gip | |
---|---|---|
コマンド | gzip ファイル名 | zip [オプション] 圧縮ファイル名 ファイル名 |
圧縮可能 | ファイルのみ | ファイル/ディレクトリ |
実行後のファイル | 削除される | 残る |
拡張子 | .gz | .zip |
bzip2形式とxz形式のメリット
gzipやzip形式の圧縮方法に比べてより圧縮率が高いのがbzip2(ビージップツー)やxzです。しかし圧縮速度はgzip形式に軍配が上がるので完全に上位互換というわけでもないようです。
圧縮率
低 gzip < bzip2 < xz 高
速度
低 bzip2 < xz < gzip 高
両者のコマンドはgzip
コマンドのコマンド名が入れ替わっただけで実行できます。
bzip2コマンド
- 拡張子:「.gz」
- 圧縮コマンド:$ bzip2 ファイル名
- 解凍コマンド:$ bunzip2 ファイル名
$ bzip2 sample.txt
$ bunzip2 sample.txt.bz2
オプション | 役割 |
---|---|
c (--stdout) | 標準出力へ出力する |
z (--compress) | 強制的に圧縮 |
d (--decompress) | 強制的に解凍 |
f (--force) | 既存の出力ファイルを上書き |
s (--small) | メモリの使用量を抑える |
1 〜 9 | ブロックサイズを指定 100k〜900k |
--fast | 上記-1の別名 |
--best | 上記-9の別名 |
xzコマンド
- 拡張子:「.xz」
- 圧縮コマンド:$ xz ファイル名
- 解凍コマンド:$ unxz ファイル名
$ xz sample.txt
$ unxz sample.txt.xz
オプション | 役割 |
---|---|
c (--stdout) | 標準出力へ出力する |
-k (--keep) | 圧縮/解凍元ファイルを残す |
z (--compress) | 強制的に圧縮 |
d (--decompress, --uncompress) |
強制的に解凍 |
l (--list) | 情報を一覧表示 |
e (--extreme) | CPU時間を使用して圧縮率を向上 |
0 〜 9 | 圧縮プリセット(デフォルトは6) |
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
searchbox
スポンサー
ProFile
ame
趣味:読書,プログラミング学習,サイト制作,ブログ
IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜
自作iOSアプリ
\ アプリをリリースしました /
みんなの誕生日
友達や家族の誕生日を登録しておくと当日に通知が届きお知らせしてくれるiOSアプリです。
貸し借り管理アプリ
お金の貸し借りを管理するためのアプリです。貸借の色が分かれているので識別しやすく、使いやすさを求めてできるだけシンプルなUIにしています。一番人気のアプリです。
カシホン
人に貸すことが多く、誰に貸したか忘れがちな本の貸し借りを記録できるアプリです。
Githubにて
iOSアプリのソースコードを公開中!