【问题标题】:How to use Pigz with Tar如何将 Pigz 与 Tar 一起使用
【发布时间】:2016-08-23 09:46:46
【问题描述】:

所以我在 tar 中使用 pigz

tar --use-compress-program=pigz

这可行,但它不使用我所有的处理器,我想确保它是递归的 (-r) 并使用 (-9 压缩级别)。

我通读了Utilizing multi core for tar+gzip/bzip compression/decompression,但它没有说明以该格式添加其他命令的任何地方,而且我在任何一个程序的手册页中都找不到任何其他内容。

谢谢, 凸轮

【问题讨论】:

  • AFAIK gzip 级别 9 不是一个好的选择,因为它需要更多的 CPU 时间而没有太多好处。 YMMV,但与级别 4 相比,您的 CPU 时间增加了 3 倍,文件大小差异约为 1%。此外,xz 级别 1 的计算量比 gz 级别 9 的计算量少,而且速率更高。

标签: bash tar


【解决方案1】:

要使用-I--use-compress-program 将参数传递给pigz,您可以enclose the command and arguments in quotes,如下所示:

tar --use-compress-program="pigz --best --recursive" -cf archive.tar.gz YourData

这是监控存档创建速度的一个有趣选项:

tar --use-compress-program="pigz --best --recursive | pv" -cf archive.tar.gz YourData

【讨论】:

  • 这个命令可以这样用吗,tar --use-compress-program="pigz -dc -p 20" -xvpf test.tgz -C /home/test_dir?我试过了,但它失败了。我想在自定义线程数下解压我的 tgz 文件。
  • pigz 无法并行解压缩,根据手册页 [1],但确实将读取、写入和检查拆分为单独的线程,因此至少比 gzip 快一点。 [1]linux.die.net/man/1/pigz
【解决方案2】:

快速解压:

tar -I pigz -xf /mnt/sd/current/backup/bigbackup_web.tar.gz -C /tmp

快速包装:

tar -cf bigbackup.tar.gz -I pigz /opt

然后:

apt-get install pigz

yum install pigz

【讨论】:

  • OP中的参数--use-compress-program=pigz-I pigz相同。
【解决方案3】:

Mark Adler 在您的问题中包含的 SO 链接上的最高投票答案确实提供了指定压缩级别以及要使用的处理器数量的解决方案:

tar cf - paths-to-archive | pigz -9 -p 32 > archive.tar.gz

见:https://stackoverflow.com/a/12320421

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2023-03-13
    • 2014-09-25
    • 2016-01-30
    • 2015-12-13
    相关资源
    最近更新 更多