LinuxでPigzツールを使用してファイルをより高速に圧縮する方法


マークアドラーによって書かれたPigzは、GZipの並列実装の頭字語です。これは、非常に高速でファイルを圧縮するのに役立つ気の利いた圧縮ツールです。古き良きgzipユーティリティの改善として、複数のコアとプロセッサを活用してデータを圧縮します。

このガイドでは、Pigzにさらに光を当て、ユーティリティを使用してLinuxシステムでファイルを圧縮する方法について説明します。

LinuxシステムへのPigzのインストール

Pigzパッケージは、DebianやCentOSなどの主要なディストリビューションの公式リポジトリに含まれているため、Pigzのインストールは簡単です。

次のように、それぞれのパッケージマネージャーを使用して、さまざまなディストリビューションの1つのコマンドでPigzをインストールできます。

$ sudo apt install pigz  [On Debian/Ubuntu]
$ sudo dnf install pigz  [On CentOS/RHEL/Fedora]
$ sudo pacman -S pigz    [On Arch/Manjaro Linux] 
OR
$ yay -S pigz

Pigzでファイルを圧縮する方法

単一のファイルをzip形式に圧縮するには、構文を使用します。

$ pigz filename

このガイドでは、デモンストレーションの目的でファイルubuntu-20.04-beta-desktop-amd64.isoを使用します。ファイルを圧縮するには、次のコマンドを実行します。

$ pigz ubuntu-20.04-beta-desktop-amd64.iso

ただし、お気づきかもしれませんが、このコマンドは圧縮時に元のファイルを削除します。圧縮後に元のファイルを保持するには、図のように -k オプションを使用して実行します。

$ pigz -k ubuntu-20.04-beta-desktop-amd64.iso

出力から、圧縮後も元のファイルが保持されていることがはっきりとわかります。

Linuxで圧縮ファイルの内容を確認する

達成された圧縮率の統計を含む、圧縮ファイルの内容を確認するには、pigzコマンドで -l オプションを使用します。

$ pigz -l ubuntu-20.04-beta-desktop-amd64.iso.gz

出力から、zipファイルの内容だけでなく、圧縮率(この場合は1.9%)も確認できます。

さらに、1から9までのさまざまな圧縮レベルを使用できます。次の圧縮レベルがサポートされています。

  • 6 – Default compression.
  • 1 – Fastest but offers the least compression.
  • 9 – Slowest but the best compression.
  • 0 – No compression.

たとえば、最適な圧縮レベルでファイルを圧縮するには、次のコマンドを実行します。

$ pigz -9 ubuntu-20.04-beta-desktop-amd64.iso

Pigzでディレクトリを圧縮する方法

Pigz自体には、フォルダーを圧縮するオプションはなく、単一のファイルのみを圧縮します。回避策として、pigzをtarコマンドと組み合わせて使用してディレクトリを圧縮します。

ディレクトリを圧縮するには、次のように -use-compress-program 引数を使用します。

$ tar --use-compress-program="pigz -k " -cf dir1.tar.gz dir1

圧縮中にプロセッサの数を制限する方法

pigzユーティリティツールは、ファイルを圧縮するときに複数のコアとプロセッサを使用することを前述しました。 -p オプションを使用して、使用するコアの数を指定できます。

以下のこの例では、元のファイル(-k)を保持しながら、4つのプロセッサ(-p4)で最適な圧縮( -9 で示される)を使用しています。

$ pigz -9 -k -p4 ubuntu-20.04-beta-desktop-amd64.iso

Pigzを使用してファイルを解凍する方法

pigzを使用してファイルまたはディレクトリを解凍するには、 -d オプションまたはunpigzコマンドを使用します。

圧縮されたISOファイルを使用すると、コマンドは次のようになります。

$ pigz -d ubuntu-20.04-beta-desktop-amd64.iso
OR
$ unpigz dir1.tar.gz

PigzとGzipの比較

もう少し進んで、Gzipツールに対してPigzをピットインしました。

結果は次のとおりです。

$ time gzip ubuntu-20.04-beta-desktop-amd64.iso
$ time pigz ubuntu-20.04-beta-desktop-amd64.iso
$ time gzip -d ubuntu-20.04-beta-desktop-amd64.iso.gz
$ time unpigz ubuntu-20.04-beta-desktop-amd64.iso.gz

比較から、Pigzの圧縮時間と解凍時間はGzipよりもはるかに短いことがはっきりとわかります。これは、PigzコマンドラインツールがGzipツールよりもはるかに高速であることを意味します

pigzコマンドの使用法の詳細については、manページにアクセスしてください。

$ man pigz

さらに、以下のコマンドを実行して、pigzコマンドで使用できるすべてのオプションを表示します。

$ pigz --help

そして、あなたはそれを持っています。 pigzコマンドラインツールについて説明し、ファイルを圧縮および解凍する方法を示しました。さらに進んで、PigzとGzipを比較したところ、圧縮と解凍の両方の速度の点で、Pigzの方が優れていることがわかりました。ぜひ試してみて、どのように進んだかを教えてください。