当前位置:首页 > 系统教程 > 正文

Linux压缩文件太慢?tar-zcvf+pigz指令,多线程压缩,速度翻倍

Linux压缩文件太慢?tar-zcvf+pigz指令,多线程压缩,速度翻倍

利用pigz多线程压缩,让tar打包压缩飞起来

Linux压缩文件太慢?tar-zcvf+pigz指令,多线程压缩,速度翻倍 Linux压缩  多线程压缩 tar pigz 压缩速度 第1张

在Linux系统中,使用tar -zcvf打包并压缩文件是日常操作,但当文件数量庞大或单个文件很大时,单线程的gzip压缩往往成为瓶颈,导致压缩速度缓慢,严重影响效率。本文将介绍如何通过多线程压缩工具pigz与tar结合,大幅提升压缩速度,实现速度翻倍的效果。

1. 为什么tar压缩慢?

传统的tar -zcvf archive.tar.gz /path/to/dir命令使用gzip算法进行压缩,而gzip默认是单线程工作的。即使你的CPU有多个核心,gzip也只能利用一个核心,导致CPU资源浪费,压缩时间随数据量线性增长。对于几十GB甚至TB级别的数据,单线程压缩可能需要数小时。

2. 什么是pigz?

pigz(Parallel Implementation of GZip)是gzip的多线程实现,它能够利用多个CPU核心并行压缩数据,从而显著提升压缩速度。pigz完全兼容gzip格式,因此生成的压缩文件可以用标准gzip解压,无需额外工具。

3. 安装pigz

大多数Linux发行版都提供了pigz软件包,安装非常简单:

    # Debian/Ubuntusudo apt install pigz# RHEL/CentOS/Fedorasudo yum install pigz   # 或 sudo dnf install pigz# Arch Linuxsudo pacman -S pigz  

4. 使用tar与pigz结合进行多线程压缩

有几种方法可以将pigz集成到tar命令中,推荐使用tar的-I(或--use-compress-program)选项指定压缩程序。

方法一:通过管道(适合所有版本)

    tar -cvf - /path/to/dir | pigz -p 4 > archive.tar.gz  

这里-p 4指定使用4个线程,你可以根据CPU核心数调整(如-p $(nproc)自动使用全部核心)。

方法二:使用tar的-I选项(推荐,tar ≥ 1.20)

    tar -I pigz -cvf archive.tar.gz /path/to/dir  

同样可以指定线程数:tar -I "pigz -p 4" -cvf archive.tar.gz /path/to/dir

5. 速度对比实测

我们以一个包含10GB文件的目录为例,分别测试单线程gzip和4线程pigz的压缩时间:

  • 传统tar+gzip:耗时 5分20秒
  • tar+pigz(4线程):耗时 1分45秒

可以看到,使用多线程压缩后,速度提升了约3倍!核心越多,提升越明显。

6. 注意事项

  • 确保目标目录有足够磁盘空间存放临时文件(管道方式无需额外空间)。
  • pigz默认使用所有CPU核心,但在共享服务器上建议限制线程数,避免影响其他用户。
  • 解压时同样可以使用pigz加速:tar -I pigz -xvf archive.tar.gzpigz -dc archive.tar.gz | tar -xv
  • 生成的压缩文件仍以.tar.gz结尾,兼容性完全不变。

7. 总结

通过将tar pigz结合,我们轻松实现了Linux压缩的多线程加速,极大缩短了备份和打包时间。无论是日常使用还是自动化脚本,都值得尝试。掌握这一技巧,让压缩速度不再成为瓶颈!

关键词:Linux压缩多线程压缩tar pigz压缩速度