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は実行中のトランザクションを照会し、ロックを待機する方法

navicatを使用してテストと学習を行います。まず、 set autocommit = 0;を使用...

Vue のプラグインとコンポーネントの違いと使い方のまとめ

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...

MySQL explain クエリ命令情報の取得原理と例

explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...

Docker コンテナに TensorRT をインストールする際の問題

Ubuntu にインストールされているバージョンをアンインストールします。 sudo apt-get...

Docker に MySQL と Redis をインストールする方法

この記事はCentOS 7.3システム環境をベースに、MySQLとRedisのインストールと使用につ...

MacでのMySQL5.7.22のインストール手順

1. インストールパッケージを使用してMySQLをインストールします(オンラインダウンロードは遅すぎ...

Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法

最近、Vue のソースコードを勉強していて、Vue で親コンポーネントと子コンポーネント間でデータを...

Dockerイメージのローカル移行の実装

最近 Docker を勉強しているのですが、よく問題に遭遇します。Docker イメージをダウンロー...

Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。

私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...

初心者のためのMySQL外部キーの設定方法

目次外部キーの役割mysql 外部キー設定方法要約する外部キーの役割データの一貫性、整合性を維持し、...

大量のデータを含むエレメントのシャトルボックスで「すべて選択」をクリックするとスタックする問題の解決方法

目次解決策1: EUIの転送コンポーネントをコピーして変更し、プロジェクトディレクトリに導入する解決...

Win10 DVWA のダウンロード、インストール、構成のグラフィック チュートリアルの詳細な説明 (初心者向け学習侵入)

コンピュータ システムが再インストールされ、侵入テスト学習環境 DVWA を再インストールする必要が...

ファイルが存在するかどうかを判断する JavaScript サンプルコード

1. ビジネスシナリオ最近はファイルのアップロードやダウンロードに関する開発をしています。ダウンロー...

JavaScript 状態コンテナ Redux の詳細な説明

目次1. Reduxを選ぶ理由2. Reduxデータフロー3つの原則4. Reduxソースコード分析...

MySql データベース クエリの特殊コマンド

まずMySQLのインストールMySQLソフトウェアをダウンロードし、インストールパスを変更しますMy...