ピッグ 、 pの略 arallel i gzの実装 ipは、Linuxでファイルを圧縮および解凍するための無料のオープンソースマルチスレッド圧縮ユーティリティです。 Pigz、 pig-zeeと発音 、 zlibを使用します およびpthread ライブラリを使用して、データを圧縮するときに複数のプロセッサと複数のコアを最大限に活用します。 pigzはスレッドを使用して圧縮し、複数のプロセッサとコアを利用するため、gzipを使用するよりもはるかに高速に大きなファイルをアーカイブできます。簡単に言うと、pigzはgzipと同じように動作しますが、圧縮時に複数のプロセッサとコアに作業を割り当て、圧縮/解凍プロセスを大幅に高速化します。このガイドでは、LinuxでPigzを使用してファイルを並行して圧縮および解凍する方法を学びましょう。
LinuxにPigzをインストールする
Pigzは、人気のあるLinuxオペレーティングシステムの公式リポジトリで入手できます。
Arch Linux およびManjaroなどのバリアント Linux、[コミュニティ]を有効にする コマンドを使用してPigzをリポジトリに保存し、インストールします:
$ sudo pacman -S pigz
CentOS 8/7/6 :
$ sudo yum install pigz
Debian :
$ sudo apt-get install pigz
Fedora :
$ sudo dnf install pigz
Ubuntuについて 、 Linux Mint :
$ sudo add-apt-repository universe
$ sudo apt install pigz
openSUSE :
$ sudo zypper install pigz
他のLinuxディストリビューションでは、以下に示すようにソースからコンパイルしてインストールします。
まず、次の前提条件がインストールされていることを確認してください。
- 作る
- gcc
- zlib-devel
たとえば、Debianベースのシステムでは、次のコマンドを使用して上記のパッケージをインストールできます。
$ sudo apt install make gcc zlib-devel
RPMベースのシステムの場合:
$ sudo yum install make gcc zlib-devel
次に、公式Webサイトから最新のPigzバージョンをダウンロードします(リンクは最後にあります):
$ wget https://zlib.net/pigz/pigz-2.4.tar.gz
pigz tarファイルを抽出します:
$ tar -xzvf pigz-2.4.tar.gz
このコマンドは、 pigz-2.4という名前のフォルダー内のコンテンツを抽出します 現在の作業ディレクトリにあります。
「pigz-2.4」ディレクトリへのCD:
$ cd pigz-2.4
次のコマンドを使用してコンパイルおよびインストールします。
$ make
pigzバイナリを$PATHにコピーします(例: / usr / local / bin )。 :
$ sudo cp pigz /usr/local/bin/
ログアウトしてから再度ログインして、pigzの使用を開始します。
Pigzを使用してファイルを並行して圧縮および解凍
Pigzは、指定された入力を 128 KBに分割します それらのそれぞれを並行してチャンク化および圧縮します。生成される圧縮データ形式は、deflate圧縮方式を使用して、gzip、zlib、または単一エントリのzip形式です。デフォルトでは、ファイルを gzipで圧縮します (.gz)形式。
いくつかの実用的な例を示しましょう。このガイドでは、 archlinux.isoを使用します ファイル(サイズ 677.4 MB )テスト用。
ファイルの圧縮
デフォルトのオプションでファイルを圧縮するには、次のコマンドを実行します。
pigz <path-to-file>
例:
$ pigz archlinux.iso
上記のコマンドは、指定されたファイル、つまり archlinux.isoを圧縮します archlinux.iso.gzとして保存します 現在の作業ディレクトリにあります。
上記のコマンドは、元のファイル、つまりarchlinux.isoを圧縮した後に削除することに注意してください。元のファイルを削除したくない場合は、 -kを使用します (保持)元のファイルを処理した後に削除しないようにPigzに指示します。
$ pigz -k archlinux.iso
アーカイブファイルの内容を一覧表示する
上記のアーカイブファイルの内容を抽出せずに一覧表示するには、 -lを使用します フラグ。
$ pigz -l archlinux.iso.gz compressed original reduced name 654901763 677380096 3.3% archlinux.iso
上記の出力からわかるように、入力ファイルは元のサイズから3.3%縮小されています。
圧縮方法を指定する
Pigzは、次の圧縮方法をサポートしています。
- 最も遅くて最高の圧縮(-9)
- 最速で圧縮率が低い(-1)
- 圧縮なし(-0)
- デフォルトの圧縮(-6)
たとえば、最適な圧縮方法(低速)を使用してファイルを圧縮するには、次のコマンドを実行します。
$ pigz -9 archlinux.iso
より少ない圧縮でファイルを圧縮します(高速):
$ pigz -1 archlinux.iso
圧縮なし:
$ pigz -0 archlinux.iso
圧縮形式の変更
デフォルトでは、出力ファイルは gzipで保存されます フォーマット。ただし、別の形式に変更することはできます。
次のコマンドは、指定されたファイルを zlibに圧縮します (.zz)gzip形式の代わりに:
$ pigz -k -z archlinux.iso
ここでは、 -kを使用しました (小文字)圧縮後に元のファイルを保持します。
同様に、ファイルを zipで圧縮するには フォーマットするには、 -Kを使用します (大文字)フラグ:
$ pigz -k -K archlinux.iso
ディレクトリの圧縮
Pigzには、フォルダを直接圧縮するオプションはありません。ただし、これは tarを組み合わせることで実現できます。 以下のようにpigzでコマンドします。
$ tar cf - Pictures/ | pigz > pictures.tar.gz
上記のコマンドは、Picturesフォルダーを圧縮し、pictures.tar.gzファイルとして保存します。
読者の一人としてワズ 以下のコメントセクションで述べたように、tar内で「use-compress-program」パラメータを使用して、pigzをパイプアウトする代わりに実行することもできます。
例:
$ tar --use-compress-program=pigz -cf yourfile.tar.gz folder1 folder2
圧縮中のプロセッサの数を制限する
すでに述べたように、Pigzは、ファイルを圧縮するときに、複数のプロセッサとコアを活用します。 -pを使用してこの動作を変更できます フラグ。
たとえば、次のコマンドは、最適な圧縮方法と4つのプロセッサを使用してファイルを圧縮し、元のファイルを保持します。
$ pigz -9 -k -p4 archlinux.iso
Linuxのプロセッサコアの数を確認するには、次のガイドを参照してください。
- LinuxのコマンドラインからCPUコアの数を見つける方法
ファイルの解凍
pigz -d を使用して、圧縮ファイルを元の形式に解凍できます。 またはunpigz コマンド。
$ pigz -d archlinux.iso.gz
または、
$ unpigz archlinux.iso.gz
詳細については、ヘルプセクションとマニュアルページを参照してください。
$ pigz --help
$ man pigz
GzipとPigz-パフォーマンスの比較
archlinux.isoをテストしました (サイズ 677.4 MB )PigzおよびGzipユーティリティを使用してファイルします。結果は次のとおりです。
Gzipを使用した圧縮:
$ time gzip archlinux.iso real 0m35.086s user 0m32.719s sys 0m1.333s
Pigzを使用した圧縮:
$ time pigz archlinux.iso real 0m12.545s user 0m46.376s sys 0m1.520s
Gzipによる解凍:
$ time gzip -d archlinux.iso.gz real 0m6.847s user 0m5.621s sys 0m0.783s
Pigzによる解凍:
$ time unpigz archlinux.iso.gz real 0m2.398s user 0m2.370s sys 0m1.931s
上記の出力からわかるように、Pigzは 677.4 MBの単一ファイルを圧縮および解凍できます。 gzipの2倍の速さです。
したがって、最新のマルチプロセッサ、マルチコアシステムを使用していて、使用可能なすべてのCPUコアを使用して、より大きなファイルをできるだけ速く圧縮したい場合は、pigzが適しています。試してみて、下のコメントセクションでPigz圧縮ユーティリティについての考えを教えてください。
関連記事:
- Linuxでファイルを圧縮および解凍する方法
- Linuxでファイルとディレクトリをアーカイブする方法