gzip/bzip2/xz/zstd本节摘要:上一节讲了「打包与压缩是两件事」,这一节专门讲压缩器本身。Linux 生态有四种主流压缩工具,各有取舍:
gzip(老牌、快、通用)、bzip2(压缩率更高、慢)、xz(压缩率最高、更慢)、zstd(新秀,速度与压缩率兼顾)。新手常纠结「到底用哪个」,本节要给一张清晰的选型表——根据「速度、压缩率、CPU 成本、兼容性」四个维度,告诉你什么场景该用什么。理解这张选型表,你就能在工作中快速做对决定,而不是无脑gzip到底。
内容来源:综合
gzip/bzip2/xz/zstd相关知识整理,套用体系化模板。
阅读完本节,你应当能够:
gzip(快/老/通用)、bzip2(中)、xz(高压缩率/慢)、zstd(新秀/平衡)。.tar.gz 是最通用、.tar.xz 压缩率最高、.tar.zst 是未来趋势。不同的压缩算法有不同的取舍,核心矛盾是:压缩率越高,通常计算成本(CPU 时间)越大。没有「绝对最好」的算法,只有「特定场景下最合适」的。这催生了几代压缩器:
.deb/.rpm 内部用它)。这四个工具的接口高度一致(都接受单个文件),差异主要在算法特性上。
这是本节的核心。根据四个维度对比:
| 工具 | 后缀 | 压缩率 | 速度 | CPU/内存 | 兼容性 | 典型场景 |
|---|---|---|---|---|---|---|
gzip |
.gz |
一般 | 快 | 低 | 极广(所有系统) | 日志归档、流式压缩、默认选择 |
bzip2 |
.bz2 |
较高 | 慢 | 中 | 广 | 已被 xz 取代,少用 |
xz |
.xz |
最高 | 最慢 | 高 | 较广 | 大文件分发(软件包) |
zstd |
.zst |
高 | 最快 | 中低 | 新(快速普及中) | 实时压缩、容器、未来默认 |
gzip(.tar.gz)。老系统、跨平台、日志归档。xz(.tar.xz)。分发大软件包、长期冷存储。zstd(.tar.zst)。实时压缩、容器镜像、内核。四种工具的接口惊人地一致,记住一种就能类推其他:
# gzip gzip file.txt # 压缩, 得到 file.txt.gz, 原文件消失 gzip -k file.txt # 压缩并保留原文件(-k keep) gzip -d file.txt.gz # 解压(d = decompress) gunzip file.txt.gz # 解压(等价于 gzip -d) # bzip2(j 系) bzip2 file.txt # 得到 file.txt.bz2 bzip2 -d file.txt.bz2 # 解压 # xz(J 系) xz file.txt # 得到 file.txt.xz xz -d file.txt.xz # 解压 # zstd zstd file.txt # 得到 file.txt.zst zstd -d file.txt.zst # 解压
所有压缩器都支持 -1(最快/压缩率最低)到 -9(最慢/压缩率最高),默认通常是 -6:
gzip -1 big.log # 最快压缩(牺牲压缩率) gzip -9 big.log # 最高压缩率(牺牲速度)
💡 技巧:压缩日志这类场景,
-1往往是性价比最高的选择——压缩率比-6低不了多少,但速度快好几倍。CPU 紧张时优先考虑低级别。
tar -czf a.tar.gz dir/ # gzip tar -cJf a.tar.xz dir/ # xz tar --zstd -cf a.tar.zst dir/ # zstd(tar 需较新版本支持)
gzip file.txt # file.txt 消失, 只剩 file.txt.gz
gzip/bzip2/xz 默认「压缩后删除原文件」。要保留加 -k(keep)。zstd 默认保留原文件(行为不同,注意)。
gzip photo.jpg # 几乎不变小!
JPEG/PNG/MP4/ZIP 这类格式已经是压缩过的,再用 gzip 压几乎不缩小(因为冗余已被榨干)。压缩只对「文本、日志、未压缩数据」效果显著。别浪费时间压缩二进制媒体文件。
xz 在 2009 年才流行,zstd 在 2015 年。老系统(老 CentOS、嵌入式设备)可能没装,你传过去打不开。跨系统传输,稳妥选 gzip。
zstd file.txt # 默认保留原文件 gzip file.txt # 默认删除原文件
切换工具时注意默认行为差异,zstd「保留」而其他三者「删除」。
gzip(快/通用)、bzip2(已被 xz 取代)、xz(压缩率最高/最慢)、zstd(新秀/平衡/未来)。工具 文件 压缩、工具 -d 解压;压缩级别 1-9(默认 6)。-k 保留),zstd 默认保留——切换工具注意差异。下一节讲跨平台归档的备选——zip/unzip,它自带压缩、Windows 原生支持,适合「传给 Windows 同事」的场景。