技術ノート Linux Linux で Gzip を使用してファイルを圧縮および解凍する方法

Linux で Gzip を使用してファイルを圧縮および解凍する方法

ファイル圧縮 ユーティリティは数多くありますが、すべての Linux ディストリビューションで確実に見つかるのは gzip です。 1 つの圧縮ツールのみの使用方法を学習する場合は、 gzip 使用する必要があります。

アルゴリズムとツリー

gzip データ圧縮ツールは 1990 年代初頭に作成され、今でもすべての Linux ディストリビューションに含まれています。利用可能な圧縮ツールは他にもありますが、どの Linux コンピュータで作業する必要があるとしても、 gzip は見つかります。したがって、 gzip 使用方法を知っていれば、何もインストールすることなくそのまま使用できます。

gzip PKZIP で有名な Phil Katz によって発明され 、特許を取得した DEFLATE アルゴリズムの実装です。 DEFLATE アルゴリズムは、すべてテーマのバリエーションで動作する以前の圧縮アルゴリズムを改良しました。圧縮されるデータがスキャンされ、一意の文字列が識別されてバイナリ ツリーに追加されます。

一意の文字列には、ツリー内の位置に基づいて一意の ID トークンが割り当てられます。トークンはデータ内の文字列を置換するために使用されます。トークンは置換されるデータよりも小さいため、ファイルは圧縮されます。元の文字列をトークンに置き換えると、データが非圧縮状態に再インフレートされます。

DEFLATE アルゴリズムには、最も頻繁に遭遇する文字列には最小のトークンが割り当てられ、最も頻繁に遭遇しない文字列にはより大きなトークンが割り当てられるという工夫が加えられました。 DEFLATE アルゴリズムには、 ハフマン コーディング LZ77 圧縮 という 2 つの以前の圧縮方法のアイデアも組み込まれています。

この記事の執筆時点では、DEFLATE アルゴリズムは 30 年近く前のものです。 30 年前、データ ストレージのコストは高く、伝送速度も遅かったです。データ圧縮は非常に重要でした。

現在、データ ストレージははるかに安価になり、伝送速度は桁違いに速くなります。しかし、保存すべきデータはさらに多く、世界中の人々が クラウド ストレージ ストリーミング サービス にアクセスしています。アップロードまたは送信する必要があるものを圧縮することだけを行っている場合でも、または ローカル ハード ドライブ上のスペースを取り戻そう としている場合でも、データ圧縮は依然として非常に重要です。

Linux で Gzip を使用してファイルを圧縮および解凍する方法

gzipコマンド

ファイルが大きいほど、圧縮率は高くなります。これには 2 つの理由があります。 1 つは、大きなファイル全体に同一のバイト シーケンスが多数繰り返されることです。 2 番目の理由は、解凍を行うために、文字列とトークンのリストを圧縮ファイルに保存する必要があることです。ファイルが非常に小さい場合、そのオーバーヘッドによって圧縮の利点が台無しになる可能性があります。ただし、ファイルがかなり小さい場合でも、サイズはある程度縮小される可能性があります。

Linux で Gzip を使用してファイルを圧縮および解凍する方法

ファイルの圧縮

ファイルを圧縮 (または zip) する には、ファイルの名前を gzip コマンドに渡すだけです。ファイルの元のサイズを確認し、圧縮してから、圧縮ファイルのサイズを確認します。

 ls -lh 計算シート.ods

 gzip 計算シート.ods

 ls -lh cal-*

元のファイルである「calc-sheet.ods」というスプレッドシートは 11 KB、圧縮ファイル (アーカイブ ファイルとも呼ばれます) は 9.3 KB です。アーカイブ ファイルの名前は、元のファイルの名前に「.gz」が追加されたものであることに注意してください。

ls コマンドの最初の使用では、特定のファイルであるスプレッドシートがターゲットになります。 ls の 2 番目の使用では、「calc-」で始まるすべてのファイルが検索されますが、圧縮ファイルのみが検索されます。これは、デフォルトで gzip アーカイブ ファイルを作成し、元のファイルを削除するためです。

それは問題ではありません。元のファイルが必要な場合は、アーカイブ ファイルから取得できます。ただし、元のファイルを保持したい場合は、 -k (保持) オプションを使用できます。

 gzip -k calc-sheet.ods

 ls -lh 計算シート.*

今回は、元の ODS ファイルが保持されます。

Linux で Gzip を使用してファイルを圧縮および解凍する方法

ファイルの解凍

GZ アーカイブ ファイルを解凍 (または解凍) するには、 -d (解凍) オプションを使用します。これにより、圧縮ファイルがアーカイブから抽出され、元のファイルと区別できないように解凍されます。

 ls 計算シート.*

 gzip -d calc-sheet.ods.gz

 ls 計算シート.*

今回は、 gzip 元のファイルを解凍した後、アーカイブ ファイルを削除したことがわかります。アーカイブ ファイルを保持するには、 -k (保持) オプションと -d (解凍) オプションを再度使用する必要があります。

 ls 計算シート.*

 gzip -d calc-sheet.ods.gz

 ls 計算シート.*

今回は、gzip はアーカイブ ファイル を削除 しません。

Linux で Gzip を使用してファイルを圧縮および解凍する方法

解凍と上書き

元のファイルが存在するディレクトリ、または同じファイルを含む別のファイルが存在するディレクトリにファイルを抽出しようとすると、 gzip 抽出を中止するか既存のファイルを上書きするかを選択するよう求めます。

 gzip -d テキストファイル.txt.gz

ディレクトリ内のファイルをアーカイブのファイルで上書きしてもよいことが事前にわかっている場合は、-f (強制) オプションを使用します。

 gzip -df テキストファイル.txt.gz

ファイルは上書きされ、何も言わずにコマンド ラインに戻ります。

Linux で Gzip を使用してファイルを圧縮および解凍する方法

ディレクトリツリーの圧縮

-r (再帰) オプションを使用すると、 gzip ディレクトリ ツリー全体のファイルを圧縮します。しかし、結果は期待どおりではないかもしれません。

この例で使用するディレクトリ ツリーは次のとおりです。各ディレクトリにはテキスト ファイルが含まれています。

ツリーレベル1

ディレクトリ ツリーで gzip 使用して、何が起こるかを見てみましょう。

 gzip -r レベル1/

ツリーレベル1

その結果、 gzip ディレクトリ構造内のテキスト ファイルごとにアーカイブ ファイルを作成します。ディレクトリ ツリー全体のアーカイブは作成されませんでした。実際、 gzip アーカイブに 1 つのファイルしか配置できません。

ディレクトリ ツリーとそのすべてのファイルを含むアーカイブ ファイルを作成できますが、別のコマンドを実行する必要があります。 tar プログラムは 多くのファイルのアーカイブを作成するために使用されますが、独自の圧縮ルーチンはありません。ただし、 tar で適切なオプションを使用すると、 tar gzip を介してアーカイブ ファイルをプッシュできるようになります。このようにして、圧縮されたアーカイブ ファイルと複数ファイルまたは複数ディレクトリのアーカイブを取得します。

 tar -czvf レベル1.tar.gz レベル1

tar オプションは次のとおりです。

  • c : アーカイブを作成します。
  • z : ファイルを gzip 経由でプッシュします。
  • v : 詳細モード。 tar が何をしているのかをターミナル ウィンドウに表示します。
  • f level1.tar.gz : アーカイブ ファイルに使用するファイル名。

これにより、ディレクトリ ツリー構造とディレクトリ ツリー内のすべてのファイルがアーカイブされます。

アーカイブに関する情報の取得

-l (リスト) オプションは、アーカイブ ファイルに関する情報を提供します。アーカイブ内のファイルの圧縮サイズと非圧縮サイズ、圧縮率、ファイル名が表示されます。

 gzip -l leve1.tar.gz

 gzip -l テキストファイル.txt.gz

-t (テスト) オプションを使用して、アーカイブ ファイルの整合性をチェックできます。

 gzip -t level1.tar.gz

すべて問題がなければ、何も言わずにコマンド ラインに戻ります。ニュースがないのは良いニュースです。

アーカイブが 破損して いるか、アーカイブではない場合は、それについて通知されます。

 gzip -t not-an-archive.gz

速度と圧縮

アーカイブの作成速度または圧縮の程度を優先することを選択できます。これを行うには、オプションとして -1 から先頭 -9 までの数値を指定します。 -1 オプションは圧縮を犠牲にして最高の速度を提供し、 -9 オプションは速度を犠牲にして最高の圧縮を提供します。

これらのオプションのいずれかを指定しない限り、gzip は -6 を使用します。

 gzip -1 計算シート.ods

 ls -lh 計算シート.ods.gz

 gzip -9 calc-sheet.ods

 ls -lh 計算シート.ods.gz

 gzip -6 calc-sheet.ods

 ls -lh 計算シート.ods.gz

これほど小さいファイルでは、実行速度に大きな違いは見られませんでしたが、圧縮にはわずかな違いがありました。

興味深いことに、レベル 9 圧縮の使用とレベル 6 圧縮の使用に違いはありません。特定のファイルから圧縮できる圧縮率には限界があり、この場合、レベル 6 の圧縮でその限界に達しました。 9 まで上げても、ファイルサイズはそれ以上減少しませんでした。 ファイルが大きくなる と、レベル 6 とレベル 9 の違いがより顕著になります。

Linux で Gzip を使用してファイルを圧縮および解凍する方法

圧縮されているが保護されていない

圧縮を 暗号化 やその他の形式の保護と混同しないでください。ファイルを圧縮しても、セキュリティやプライバシーは強化されません。ファイルにアクセスできる人は誰でも、 gzip を使用してファイルを解凍できます。

「 Linux で Gzip を使用してファイルを圧縮および解凍する方法」に関するベスト動画選定!

Windows10でgzip(.gz)ファイルを解凍する方法
【ワンポイントレクチャー】Linuxでの圧縮と解凍のコマンド解説【Linux初心者:第6回】