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

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

内容

  1. 在 Linux 上安装 Pigz
  2. 使用 Pigz 并行压缩和解压缩文件
    1. 压缩文件
    2. 列出存档文件的内容
    3. 指定压缩方法
    4. 更改压缩格式
    5. 压缩目录
    6. 压缩时限制处理器数量
    7. 解压文件
    8. Gzip 与 Pigz – 性能比较
    9. 帮助我们帮助您:

在 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-开发

例如,在基于 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 /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)

例如,要使用最佳压缩方法(慢速)压缩文件,请运行:

$ 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 旗帜。

例如,以下命令将使用最佳压缩方法和 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