gzip 与 pigz 是什么
gzip 是最通用的压缩工具,单线程实现、兼容性最好;pigz 是它的多线程实现,能并行使用多核缩短压缩时间,输出仍是标准 gzip 流,任何支持 gunzip 的环境都能解开。备份窗口紧张且机器核数充足时,pigz 往往是压缩环节性价比最高的一步优化。
基本信息
| 格式 | gzip 流,扩展名 .gz |
|---|---|
| pigz 参数 | -p 线程数、-k 保留源文件、-9 压缩级别 |
| 兼容性 | pigz 输出可被 gunzip 与 zcat 直接读取 |
| 默认行为 | gzip 压缩后删除源文件,需保留时加 -k |
常用操作
常用操作
gzip -9 backup.tar # 单线程压缩,生成 backup.tar.gz
pigz -9 -p 8 -k backup.tar # 8 线程并行压缩并保留源文件
zcat backup.tar.gz | tar -tf - # 不解压直接查看 tar 内容
gzip -t backup.tar.gz # 只校验完整性不落盘gzip 与 pigz 对比
| 维度 | gzip | pigz |
|---|---|---|
| 线程 | 单线程 | 多线程,-p 指定数量 |
| 速度 | 受单核限制 | 多核机器上明显更快 |
| 压缩率 | 同级别基本一致 | 略低,因分块并行 |
| 依赖 | 系统基本自带 | 需要额外安装 |
使用要点
- 压缩级别与耗时不呈线性:从 6 提到 9 往往收益很小但耗时明显增加
- 多核机器上用 pigz 能把压缩从串行瓶颈变成并行,备份窗口随之缩短
- 与 tar 组合时优先用管道,避免先生成未压缩大文件再压缩占用双份空间
- 对已压缩数据再次压缩收益很小,图片、视频与其他归档不必重复处理
- 长期归档要确认目标环境有对应解压工具,格式越通用越安全
压缩级别越高越耗 CPU;备份窗口紧张时用较低级别换取吞吐通常更划算,压缩比差几个百分点远不如按时完成重要。
gzip 默认删除源文件:在归档流程中误用会把未压缩的原始文件一并删掉,脚本里应显式写出 -k 或先复制再压缩。
压缩策略选择
- 数据可再生成(缓存、日志轮转产物)时,优先用低级别换取更短窗口
- 数据需要长期保存且访问稀少时,可用高级别缩小长期存储占用
- 压缩与备份同时进行还要留出磁盘写带宽,避免压缩后写盘成为新瓶颈
- 同机既有业务又有备份任务时,限制并行度比提高压缩级别更重要