Linux gzip コマンドのファイル圧縮実装原理とコード例

Linux gzip コマンドのファイル圧縮実装原理とコード例

gzip は、Linux システムでファイルの圧縮と解凍によく使用されるコマンドです。このコマンドで圧縮された新しいファイルには、通常、拡張子「.gz」が付きます。

もう一度強調しておきますが、gzip コマンドはファイルの圧縮にのみ使用でき、ディレクトリの圧縮には使用できません。ディレクトリが指定されている場合でも、ディレクトリ内のすべてのファイルのみが圧縮されます。

gzip コマンドの基本的な形式は次のとおりです。

[root@localhost ~]# gzip [オプション] ソースファイル

コマンド内のソース ファイルは、圧縮操作を実行する場合は共通ファイルを参照し、解凍操作を実行する場合は圧縮ファイルを参照します。このコマンドでよく使用されるオプションとその意味を表 1 に示します。

表1 gzipコマンドの一般的なオプションと意味

オプション意味
-c圧縮されたデータを標準出力に出力し、元のファイルを保存します。
-d圧縮ファイルを解凍します。
-r指定されたディレクトリとそのサブディレクトリ内のすべてのファイルを再帰的に圧縮します。
-v圧縮および解凍されたファイルごとに、対応するファイル名と圧縮率が表示されます。
-l圧縮ファイルごとに、次のフィールドが表示されます。
  • 圧縮ファイルのサイズ。
  • 圧縮されていないファイルのサイズ。
  • 圧縮比;
  • 圧縮されていないファイルの名前。
-番号圧縮レベルを指定するために使用されます。-1 は最低の圧縮レベルであり、圧縮率は最低です。-9 は最高の圧縮率です。デフォルトの圧縮率は -6 です。

【例1】基本圧縮

gzip 圧縮コマンドは非常に簡単です。圧縮パッケージの名前を指定する必要すらありません。ソースファイル名を指定するだけで済みます。試してみましょう:

[root@localhost ~]# gzip インストール.log
#instal.log ファイルを圧縮する
[root@localhost ~]# ls
anaconda-ks.cfg インストール.log.gz インストール.log.syslog
#圧縮ファイルは生成されるが、ソースファイルも消えてしまう

【例2】ソースファイルの圧縮を維持する

gzip コマンドを使用してファイルを圧縮すると、ソース ファイルが消えて、圧縮されたファイルになります。このとき、強迫性障害を患い、作者に「ファイルを圧縮したときにソースファイルが消えないようにすることはできますか?」と尋ねる人もいるでしょう。まあ、それは可能ですが、厄介です。

[root@localhost ~]# gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz
#-c オプションを使用しますが、圧縮されたデータを画面に出力するのではなく、圧縮ファイルにリダイレクトします。これにより、ソースファイルを削除せずにファイルを圧縮できます。
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog
#圧縮ファイルとソースファイルの両方が存在することがわかります

【例3】ディレクトリを圧縮する

gzip コマンドでディレクトリを圧縮できることは当然のことと思われるかもしれません。 試してみましょう:

[root@localhost ~]# mkdir テスト
[root@localhost ~]# test/test1 をタッチします
[root@localhost ~]# test/test2 をタッチします
[root@localhost ~]# touch test/test3 #テストディレクトリを作成し、その中にいくつかのテストファイルを作成します
[root@localhost ~]# gzip -r test/
#ディレクトリを圧縮してもエラーは報告されません
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog テスト
#しかし、テストディレクトリはまだ存在し、圧縮ファイルに変換されていないことがわかりました
[root@localhost ~]# ls テスト/
テスト1.gz テスト2.gz テスト3.gz
#オリジナルのgzipコマンドはディレクトリをパックするのではなく、ディレクトリ内のすべてのサブファイルを個別に圧縮します

Linux では、パッケージ化と圧縮は別々に処理されます。 gzip コマンドは圧縮のみ可能でパッケージ化はできないため、パッケージ ディレクトリは存在せず、ディレクトリ内のファイルのみが圧縮されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux で履歴コマンドを表示および実行する方法
  • Linux のコマンドライン履歴を隠す方法を教えます
  • Linuxのシェル履歴コマンド記録機能
  • Linux コマンドラインで他のユーザーと通信する方法
  • Linux には make コマンドがありません (make: *** ターゲットが指定されておらず、makefile または make コマンドのインストール方法が見つかりません)
  • Linux telnetコマンドの使用
  • Linuxコマンド履歴の調整方法の詳細な説明

<<:  MySQL は ACID トランザクションをどのように実装しますか?

>>:  Vueパンくずコンポーネントのカプセル化方法

推薦する

jQueryフレームワークは、要素の表示と非表示の3つのアニメーションメソッドを実装しています。

目次1. デフォルトで表示と非表示を切り替える2. スライドして表示と非表示を切り替える3. フェー...

CSS 背景画像を設定するための 6 つの興味深いヒント

background-image は、おそらくすべてのフロントエンド開発者がキャリアの中で少なくとも...

MySQLでのカスタムパラメータの使用に関する詳細な説明

MySQL 変数には、システム変数とシステム変数が含まれます。今回の学習課題はユーザー定義変数です。...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを忘れた場合の解決策: [root@localhost ~]# mysql -...

MySQL ストアド関数の詳細な紹介

目次1. ストアド関数を作成する2. ストアド関数の呼び出し3. 保存された関数を削除する4. スト...

Hタグの定義と注意事項について簡単に説明します

結果から判断すると、タイトルを定義するための固定パターンはなく、すべてむしろランダムな感じがします。...

javascript:void(0) の意味と使用例

voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...

CSS を使用してプログレスバーと順序プログレスバーを実装する例

この半月、期末試験の準備にかなりのエネルギーを費やしました。今日はしっかり復習するべきだったのですが...

Chromeの最小フォントサイズ制限12pxに対する最終的な解決策

ウェブサイトを作成するユーザーの多くが、このような問題に遭遇すると思います。Chrome のデフォル...

MySQL の遅いクエリ操作の例の分析 [有効化、テスト、確認など]

この記事では、MySQL のスロー クエリ操作について例を挙げて説明します。ご参考までに、詳細は以下...

Mysql は最大接続数を表示し、最大接続数を変更します

MySQL 最大接続数の表示と最大接続数の変更1. 最大接続数を確認する '%max_con...

純粋なテキストとアイコン付きのボタンを実現するための HTML+CSS

この記事では、いくつかの基本的なページ要素の実装方法をまとめており、後で更新される予定です。まず、私...

Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...

HTML テーブル マークアップ チュートリアル (15): テーブル タイトル

<br />このタグを使用すると、表のタイトルを直接追加し、タイトル テキストの配置プロ...

高度な JavaScript フロントエンド開発でよく使用されるいくつかの API の例の詳細な説明

目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...