Linux——服务器多线程压缩工具介绍
并行压缩指定文件夹
压缩指定文件夹时,通过 pigz
的 -p
参数指定线程数实现并行加速,命令如下:
tar -cf - 目标文件夹 | pigz -p 线程数 > 压缩包名称.tar.gz
关键说明
-p 线程数
:强制启用多线程并行压缩,建议设置为 CPU 核心数(可用 nproc
命令查看,如 8 核则设为 -p 8
)。
仅需替换两个参数:目标文件夹
(要压缩的文件夹名)和 线程数
。
压缩并显示进度
tar -cf - 目标文件夹 | pv | pigz -p 线程数 > 压缩包.tar.gz
示例:
用 12 线程压缩 documents
文件夹:
用 8 线程压缩 photos 文件夹,同时显示进度:
tar -cf - documents | pigz -p 12 > documents.tar.gztar -cf - photos | pv | pigz -p 8 > photos.tar.gz
效果:
利用多核并行加速,压缩速度比单线程提升数倍(核心数越多效果越明显)。
压缩包内保留原文件夹的完整目录结构,原文件夹不会被删除。
============================================================================
============================================================================
多线程压缩单个文件、单个目录(一个目录下含有多个文件夹)
在 Linux 中,传统的压缩工具(如 gzip
、bzip2
)默认是单线程的,压缩大文件或目录时效率较低。而 多线程压缩工具 可以利用多核 CPU 提升速度,以下是常用的高效多线程压缩工具及用法:
一、核心多线程压缩工具
1. pigz
(并行版 gzip
,推荐)
pigz
是 gzip
的多线程替代工具,兼容 gzip
格式(生成的 .gz
文件可被 gzip
解压),压缩 / 解压速度大幅提升。
安装(部分系统默认不预装):
# Ubuntu/Debiansudo apt install pigz# CentOS/RHELsudo yum install pigz# 源码安装(最新版本)wget https://zlib.net/pigz/pigz-2.8.tar.gztar -zxf pigz-2.8.tar.gz && cd pigz-2.8 && make && sudo make install
常用命令:
压缩单个文件:
pigz -p 8 -k -6 file.txt # -p 8:使用8线程;-k:保留原文件;-6:压缩级别(1最快,9最高,默认6)# 生成 file.txt.gz
压缩目录(结合 tar
打包):
tar -cf - dir/ | pigz -p 8 -6 > dir.tar.gz # 先打包目录,再用pigz多线程压缩
解压:
pigz -d -p 8 file.txt.gz # -d:解压;等价于 unpigz -p 8 file.txt.gz# 解压tar.gz包:tar -xf dir.tar.gz (直接用tar即可,自动调用gzip/pigz)
2. pbzip2
(并行版 bzip2
)
pbzip2
是 bzip2
的多线程版本,压缩率略高于 gzip
,但速度稍慢于 pigz
,适合对压缩率有一定要求的场景。
安装:
sudo apt install pbzip2 # Ubuntu/Debian
sudo yum install pbzip2 # CentOS/RHEL
常用命令:
压缩单个文件:
pbzip2 -p 8 -k -6 file.txt # -p 8:8线程;-k:保留原文件;-6:压缩级别(1-9)# 生成 file.txt.bz2
压缩目录(结合 tar
):
tar -cf - dir/ | pbzip2 -p 8 -6 > dir.tar.bz2
解压:
pbzip2 -d -p 8 file.txt.bz2 # -d:解压# 解压tar.bz2包:tar -xf dir.tar.bz2
3. pxz
(并行版 xz
)
pxz
是 xz
的多线程版本,压缩率极高(高于 gzip
/bzip2
),但速度较慢,适合对压缩率要求高、不急于完成的场景。
安装:
sudo apt install pxz # Ubuntu/Debiansudo yum install pxz # CentOS/RHEL(可能需要EPEL源)
常用命令:
压缩单个文件:
pxz -T 8 -k -6 file.txt # -T 8:8线程;-k:保留原文件;-6:压缩级别(1-9)# 生成 file.txt.xz
压缩目录(结合 tar
):
tar -cf - dir/ | pxz -T 8 -6 > dir.tar.xz
解压:
pxz -d -T 8 file.txt.xz # -d:解压# 解压tar.xz包:tar -xf dir.tar.xz
4. zstd
(Zstandard,推荐,速度与压缩率平衡)
zstd
是 Facebook 开发的新一代压缩算法,原生支持多线程,压缩速度极快(远超 gzip
),压缩率接近 xz
,是目前综合性能最优的工具之一。
安装:
sudo apt install zstd # Ubuntu/Debian(18.04+)sudo yum install zstd # CentOS/RHEL(8+)
常用命令:
压缩单个文件:
zstd -T8 -k -6 file.txt # -T8:8线程;-k:保留原文件;-6:压缩级别(1-19,默认3)# 生成 file.txt.zst
压缩目录(结合 tar
):
tar -cf - dir/ | zstd -T8 -6 > dir.tar.zst
解压:
zstd -d -T8 file.txt.zst # -d:解压;等价于 unzstd -T8 file.txt.zst# 解压tar.zst包:tar -I zstd -xf dir.tar.zst (或直接 tar -xf,部分系统需指定 -I zstd)
二、关键参数说明
线程数(-p /-T):通常设置为 CPU 核心数(如 nproc
命令可查看核心数),避免超过物理核心导致调度开销。
压缩级别(-1 到 -9 或 -19):
低级别(-1/-3):速度快,压缩率低,适合临时备份、快速传输。高级别(-9/-19):压缩率高,速度慢,适合长期存储。
保留原文件(-k):默认压缩后会删除原文件,加 -k
可保留。
三、选择建议
追求最快速度:zstd -T 核心数 -1
或 pigz -p 核心数 -1
。
平衡速度与压缩率:zstd -T 核心数 -6
(首选)或 pigz -p 核心数 -6
。
最高压缩率:pxz -T 核心数 -9
(但速度较慢)。
这些工具均支持管道(|
)与 tar
结合,轻松处理目录打包 + 压缩,是服务器端大文件处理的高效选择。