Linux 下压缩解压工具很多,不同格式在压缩率、速度、多线程支持上差异很大。本文从实用角度出发,整理了各工具的对比、用法和推荐场景。
为什么需要多线程压缩
传统的 gzip、bzip2、xz 默认只使用单核 CPU。在现代多核机器上,压缩大文件时只有一个核心在跑,其余核心闲置。多线程版本(如 pigz、pbzip2)能充分利用所有核心,速度提升 3~10 倍。
快速对比
| 格式 | 工具 | 压缩率 | 速度 | 多线程 | 典型用途 |
|---|---|---|---|---|---|
| .gz | pigz | 低 | 极快 | ✅ | 日志、临时文件 |
| .bz2 | pbzip2 | 高 | 中 | ✅ | 归档、长期存储 |
| .xz | pixz | 最高 | 慢 | ✅ | 高压缩需求备份 |
| .zst | zstd | 中高 | 极快 | ✅ | 实时压缩、高性能 |
| .7z | 7z | 最高 | 慢 | ✅ | 极限压缩,跨平台 |
| .zip | 7z | 中 | 中 | ✅ | 兼容 Windows |
各工具安装与用法
pigz — 多线程 gzip
sudo apt install pigz
# 压缩(配合 tar)
tar -I pigz -cf output.tar.gz 目录/
# 解压
tar -I pigz -xf output.tar.gz
速度约为原生 gzip 的 5 倍,适合日志轮转和临时文件。
pbzip2 — 多线程 bzip2
sudo apt install pbzip2
tar -I pbzip2 -cf output.tar.bz2 目录/
tar -I pbzip2 -xf output.tar.bz2
压缩率比 gzip 高 20%~30%,速度 2~3 倍于原生 bzip2。长期归档首选。
zstd — 新一代极速压缩
sudo apt install zstd
# -T0 自动检测 CPU 线程数
tar -I "zstd -T0" -cf output.tar.zst 目录/
tar -I zstd -xf output.tar.zst
速度碾压所有传统格式,压缩率接近 bzip2。约 10 倍于 gzip 的速度,适合实时处理和大型数据集。
7z — 极限压缩 + 跨平台
sudo apt install p7zip-full
# 压缩(LZMA2,最高压缩率)
7z a -mmt=on output.7z 目录/
# 压缩为标准 zip(兼容 Windows)
7z a -mmt=on -tzip output.zip 目录/
# 解压
7z x -mmt=on output.7z
-mmt=on 开启多线程。7z 格式压缩率最高但速度最慢;zip 格式兼容性最好但压缩率一般。
tar 实用技巧
打包时排除指定目录
# 排除 .git 和 node_modules
tar -czvf backup.tar.gz --exclude=.git --exclude=node_modules .
# 从文件读取排除列表
tar -czvf backup.tar.gz -X exclude.list .
批量解压多个包
for f in *.tar; do echo "解压: $f"; tar -xf "$f"; done
场景推荐
| 需求 | 推荐 | 理由 |
|---|---|---|
| 最快压缩/解压 | zstd 或 pigz | 速度碾压其他工具 |
| 平衡压缩率与速度 | pbzip2 | 比 gz 压缩率高,比 xz 快 |
| 极限压缩 | pixz 或 7z | 备份不可重复数据 |
| 跨平台发给别人 | 7z -tzip | Windows/macOS 直接打开 |
| 日志轮转 | pigz | 速度优先,压缩率不重要 |