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パンくずコンポーネントのカプセル化方法

推薦する

MYSQL サブクエリとネストされたクエリの最適化例の分析

ゲーム史上最高スコアトップ100をチェックSQLコード cdb_playsgame ps から ps...

スライディングカルーセル効果を実現する js

この記事では、スライディングカルーセル効果を実現するためのjsの具体的なコードを参考までに共有します...

MySQLにおける(JOIN/ORDER BY)文のクエリ処理と最適化方法

EXPLAIN ステートメントは、MySQL クエリ ステートメント プロセスと EXPLAIN ス...

Sqoop エクスポート マップ 100% 削減 0% さまざまな理由と解決策でスタック

私はこのようなバグを典型的な「ハムレット」バグと呼んでいます。これは、「エラーメッセージは同じだが、...

UbuntuはPythonスクリプトのサンプルコードを定期的に実行する

オリジナルリンク: https://vien.tech/article/157序文この記事では、Ub...

JavaScript の find() メソッドと filter() メソッドの違いのまとめ

目次序文JavaScript find() メソッドJavaScript filter() メソッド...

Centos7.4 システムに yum ソースから mysql 5.6 をインストールする

システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...

jQueryはマウスドラッグ画像機能を実装します

この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...

MySQLクエリツリー構造方式

目次MySQL クエリツリー構造1. ツリー構造について2. MySQLでカスタム関数を定義する方法...

HTMLとリソースがどのように読み込まれるかを理解します

このブログのすべてのコンテンツは、クリエイティブ コモンズ ライセンスの下でライセンスされています。...

Vue のローカルコンポーネントの紹介

Vueでは、ローカルコンポーネントを自分で定義(登録)することができます。コンポーネント名を定義する...

HTMLの空リンクの役割についての簡単な説明

空のリンク:つまり、ターゲット エンドポイントとのリンクはありません。フォーマット <a hr...

MySQLデータベースのマスタースレーブレプリケーションの原理と機能の分析

目次1. データベースのマスター/スレーブ分類: 2. MySQL マスタースレーブの紹介3. マス...

jquery-multiselect を使用した IE6 のバグの解決方法

jquery-multiselect (ドロップダウン ボックスをチェックボックス付きの複数選択コン...

MySQL でインデックス構造として B+ ツリーを使用する利点は何ですか?

序文MySQL では、Innodb と MyIsam の両方がインデックス構造として B+ ツリーを...