GNU/Linux >> Linux の 問題 >  >> Linux

Pigz –Linuxでファイルを並行して圧縮および解凍

ピッグ 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でファイルとディレクトリをアーカイブする方法

Linux
  1. Linux ファイルとディレクトリの削除

  2. bzip2 コマンドを使用して Linux で .bz2 ファイルを圧縮および解凍する方法

  3. すべての Linux 圧縮/解凍コマンド

  1. Linuxでファイルを圧縮および解凍する方法

  2. Linuxでファイルをアーカイブおよび圧縮する方法

  3. Linuxで圧縮/解凍する方法

  1. Linuxでファイルを圧縮および抽出するための16のtarコマンド

  2. Linuxでのtarコマンド(ファイルの圧縮と解凍)

  3. Linuxでtarコマンドを使用してファイルを圧縮および抽出する方法は?