在 Linux 环境下,选择压缩工具通常是在压缩比(文件多小) 和 速度(耗时多久) 之间做权衡。
以下是主流压缩格式的压缩比排名(从高到低)及其对应的操作命令:
1. 压缩比排名 (由强到弱)
| 排名 | 格式 (后缀) | 核心算法 | 特点 |
|---|---|---|---|
| 1 | .7z | LZMA/LZMA2 | 最强压缩比。适合对体积极其敏感、不计较压缩时间的场景。 |
| 2 | .xz | LZMA2 | Linux 官方标准的高压缩比格式。内核源码、发行版包常用,解压快但压缩极慢。 |
| 3 | .bz2 | Burrows-Wheeler | 曾是主流。压缩比高于 gzip,但目前地位逐渐被 xz 和 zstd 取代。 |
| 4 | .zst | Zstandard | 全能选手。由 Facebook 开发,压缩比接近 bz2,但速度极快,且支持多线程。 |
| 5 | .gz | DEFLATE | 最兼容/最快。压缩比一般,但在几乎所有 Unix 系统上都通用,速度表现稳定。 |
| 6 | .zip | DEFLATE | 跨平台王者。在 Linux 内部压缩比最低,主要用于发给 Windows 用户。 |
注: 以上排名基于通用混合数据(文档、代码等)。如果是针对已压缩过的文件(如 JPG、MP4),各工具表现差异不大。
2. 常用命令速查
在 Linux 中,我们通常使用 tar 工具来打包并调用这些压缩算法。
A. 极致压缩派 (7z / XZ)
-
7z (需要安装 p7zip)
7z a archive.7z folder/ # 压缩 7z x archive.7z # 解压 -
XZ (tar 集成)
tar -cJf archive.tar.xz folder/ # 压缩 (大写 J) tar -xJf archive.tar.xz # 解压
B. 现代平衡派 (Zstandard)
-
Zstd (目前各大发行版推荐)
tar --zstd -cf archive.tar.zst folder/ # 压缩 tar --zstd -xf archive.tar.zst # 解压 # -I(--use-compress-program)调用外部程序和参数 # -T 多线程压缩(0是匹配当前机器的核心数) # --ultra 指定压缩等级(1-19,默认3) tar -I "zstd -T0 --ultra -20" -cf archive.tar.zst folder/
C. 传统经典派 (Gzip / Bzip2)
-
Gzip (最常用)
tar -czf archive.tar.gz folder/ # 压缩 (小写 z) tar -xzf archive.tar.gz # 解压 -
Bzip2
tar -cjf archive.tar.bz2 folder/ # 压缩 (小写 j) tar -xjf archive.tar.bz2 # 解压
3. 场景选择建议
-
追求极致体积: 选 .xz 或 .7z。
- 例子: 长期备份不常读取的技术文档。
-
追求备份效率(快且小): 选 .zst。
- 例子: 每日数据库备份、日志滚动。
-
追求通用性: 选 .tar.gz。
- 例子: 分发给其他 Linux 服务器的软件源码包。
-
发给 Windows 同事: 选 .zip。
提示: 很多工具(如 xz 和 zstd)支持 -T0 参数(多线程),可以显著提升多核 CPU 下的压缩速度。例如:export XZ_OPT="-T0"。