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

推薦する

ウェブサイト開発におけるフロントエンド開発者とアーティストの知識の違い

概要: 多くの企業、特にインターネット Web サイトを主な事業とする企業のほとんどが、「アーティス...

IE8ブラウザはWebページ標準に完全互換となる

<br />海外メディアの報道によると、マイクロソフトはソフトウェアの相互運用性への取り...

Docker 起動時の ES メモリ オーバーフローの解決方法

jvm.options ファイルを elasticsearch 構成に追加し、スタック サイズを変更...

MySQL 5.7.31 64 ビット無料インストール版チュートリアル図

1. ダウンロードダウンロードアドレス: https://dev.mysql.com/get/Dow...

32 典型的な列/グリッドベースのウェブサイト

列ベースの Web デザインのインスピレーションをお探しの場合は、32 個のクラシックな列/グリッド...

WeChatアプレットのスクロールビューが左右の連動を実現

この記事では、WeChatアプレットのスクロールビューの左右連動を実現するための具体的なコードを参考...

フォント名に従ってフォントを呼び出すと、ブラウザに必要なフォントが表示されます。

質問 1: ブラウザに必要なフォントを表示するように指示するにはどうすればよいでしょうか? フォント...

Linux Centos8 CA証明書作成チュートリアル

必要なファイルをインストールする Yum インストール openssl-* -yデータベースインデッ...

docker を使って sonarqube を構築する方法

目次1. Dockerをインストールする2. ソナーイメージをインストールする3. ソナーを使ってコ...

Vueはカウントダウン機能を実装する

この記事の例では、カウントダウン機能を実装するためのVueの具体的なコードを参考までに共有しています...

時間に基づいて日付をクエリするためのMySQL最適化テクニック

たとえば、昨日新規登録されたユーザーを照会するには、次の 2 つの書き方があります。 説明する ch...

PID を作成できないために MySQL が起動できない問題を解決する方法

問題の説明MySQL 起動エラー メッセージは次のとおりです。 mysqld を起動します (sys...

要素シャトルフレームのパフォーマンス最適化の実装

目次背景解決新しい質問高度な背景シャトル ボックスが大量のデータを処理すると、レンダリングされる D...

MySQLはデータベースのN+1クエリ問題を解決します

導入HibernateやMyBatisなどのORMフレームワークでは、部門に関連付けられたユーザーオ...

MySQL メモリテーブルと一時テーブルの使用方法の詳細な説明

MySQL メモリ テーブルと一時テーブルの使用メモリテーブル: セッション 1 $ mysql -...