Pigz – 在 Linux 中并行压缩和解压缩文件

猪仔, 短缺 p平行的 一世的实施 广州ip,是一个免费的开源多线程压缩实用程序,用于在 Linux 中压缩和解压缩文件。 Pigz,发音为 猪仔使用 zlib线程 库,并在压缩数据时充分利用多处理器和多核。 由于 pigz 使用线程压缩以利用多个处理器和内核,因此它可以比使用 gzip 更快地归档更大的文件。 简单地说,pigz 做了 gzip 的工作,但它在压缩时将工作分配给多个处理器和内核,并显着加快了压缩/解压缩过程。 在本指南中,让我们学习在 Linux 中使用 Pigz 并行压缩和解压缩文件。

在 Linux 上安装 Pigz

Pigz 在流行的 Linux 操作系统的官方存储库中可用。

Arch Linux 及其变体 曼扎罗 Linux,启用 [Community] 存储库并使用命令安装 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 薄荷糖

$ sudo add-apt-repository universe
$ sudo apt install pigz

openSUSE

$ sudo zypper install pigz

在其他 Linux 发行版上,从源代码编译和安装,如下所示。

首先,确保您已安装以下先决条件:

  • 制作
  • 海合会
  • zlib-开发

为了 example,在基于 Debian 的系统上,您可以使用以下命令安装上述软件包:

$ sudo apt install make gcc zlib-devel

在基于 RPM 的系统上:

$ sudo yum install make gcc zlib-devel

然后从官网下载最新的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 pigz-2.4

使用以下命令编译并安装它:

$ make

将 pigz 二进制文件复制到您的 $PATH,对于 example /usr/local/bin

$ sudo cp pigz /usr/local/bin/

注销并重新登录以开始使用 pigz。

使用 Pigz 并行压缩和解压缩文件

Pigz将给定的输入分成 128 KB 块并并行压缩它们中的每一个。 生成的压缩数据格式为 gzip、zlib 或使用 deflate 压缩方法的单项 zip 格式。 默认情况下,它压缩文件 压缩包 (.gz) 格式。

让我给你看一些实际的例子。 出于本指南的目的,我将使用 archlinux.iso 文件大小 677.4 MB) 供测试用。

压缩文件

要使用默认选项压缩文件,只需运行:

pigz <path-to-file>

例子:

$ pigz archlinux.iso

上面的命令将压缩给定的文件,即 archlinux.iso 并将其另存为 archlinux.iso.gz 在当前工作目录中。

请注意,上述命令会在压缩后删除原始文件即archlinux.iso。 如果您不想删除原始文件,请使用 -k (keep) 指示 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)

为了 example,要使用最佳压缩方法(慢)压缩文件,请运行:

$ pigz -9 archlinux.iso

以较少压缩(快速)压缩文件:

$ pigz -1 archlinux.iso

无压缩:

$ pigz -0 archlinux.iso

更改压缩格式

默认情况下,它将输出文件保存在 压缩包 格式。 但是,您可以将其更改为不同的格式。

以下命令将给定文件压缩为 zlib (.zz) 而不是 gzip 格式:

$ pigz -k -z archlinux.iso

在这里,我们使用了 -k (小写)压缩后保留原始文件。

同样,将文件压缩到 压缩 格式,使用 -K (大写)标志:

$ pigz -k -K archlinux.iso

压缩目录

Pigz 没有任何选项可以直接压缩文件夹。 但是,我们可以通过结合 柏油 使用 pigz 的命令如下所示。

$ tar cf - Pictures/ | pigz > pictures.tar.gz

上述命令将压缩图片文件夹并将其保存为pictures.tar.gz 文件。

作为我们的读者之一 瓦兹 在下面的评论部分中说过,我们还可以使用 tar 中的“use-compress-program”参数来运行 pigz,而不是通过管道输出。

例子:

$ tar --use-compress-program=pigz -cf yourfile.tar.gz folder1 folder2

压缩时限制处理器数量

就像我已经说过的,Pigz 在压缩文件时充分利用了多个处理器和内核。 您可以使用更改此行为 -p 旗帜。

为了 example 以下命令将使用最佳压缩方法和 4 个处理器压缩文件并保留原始文件:

$ pigz -9 -k -p4 archlinux.iso

要查找 Linux 中的处理器内核数量,请参阅以下指南:

  • 如何在 Linux 中从命令行查找 CPU 核心数

解压文件

我们可以使用 猪-d 或者 解压 命令。

$ 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 快两倍。

所以,如果你有一个现代的多处理器、多核系统,并且想尽可能快地压缩更大的文件,通过使用所有可用的 CPU 内核,pigz 将是一个不错的选择! 试一试,并在下面的评论部分告诉我们您对 Pigz 压缩实用程序的想法。

相关阅读:

  • 如何在 Linux 中压缩和解压缩文件
  • 如何在 Linux 中归档文件和目录

资源:

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!