gzip 是什么
gzip 是单文件压缩工具,也是 .gz 格式与 deflate 算法的代名词。它只处理一个文件或一条数据流,默认压完删除原文件;要一次打包多个文件,得先用 tar,这也是 .tar.gz 这种双扩展名的由来。日志归档、软件包分发、内核镜像都大量使用它,属于系统里最基础的压缩能力。
基本信息
| 适用平台 | Linux、Unix 通用(GNU gzip) |
|---|---|
| 命令语法 | gzip [选项] [文件...] |
| 常用选项 | -d 解压 / -k 保留原文件 / -9 最高压缩 / -1 最快 / -l 查看压缩率 / -c 输出到标准输出 / -t 完整性校验 |
| 同类命令 | gunzip 等价于 gzip -d,zcat 等价于 gzip -dc |
典型使用场景
- 归档历史日志:gzip -9 app.log,文本日志的压缩比通常很可观
- 不解压直接读:zcat app.log.gz | grep ERROR
- 校验压缩包完整性:gzip -t app.log.gz,返回码为 0 表示没问题
- 流式压缩:tar -czf 内部就是先打包再调用 gzip
- 传输前压缩:大文件先 gzip 再传输,能明显缩短网络时间
常用示例
常用示例
gzip -k -9 app.log # 保留原文件,使用最高压缩级别
gzip -d app.log.gz # 解压(等价 gunzip)
zcat app.log.gz | head # 不解压直接读内容
gzip -l app.log.gz # 查看压缩率与原始大小
gzip -t app.log.gz # 校验完整性,返回码 0 表示正常
gzip -1 fast.log # 最快压缩,适合临时的中间文件常用选项
| 选项 | 作用 | 提示 |
|---|---|---|
| -d | 解压 | 等价于 gunzip |
| -k | 保留原文件 | GNU 版支持,老版本可能没有 |
| -1 到 -9 | 压缩级别,数字越大越慢也越小 | 默认是 6,日志归档常用 9 |
| -c | 把结果写到标准输出 | 与原文件配合可做流式处理 |
| -l | 列出压缩前后大小与比率 | 快速评估压缩效果 |
| -t | 测试压缩包完整性 | 传输后校验的首选 |
压缩后原文件默认被删除,想两者都留就加 -k;脚本里处理重要文件时先复制一份再压,比事后翻备份更省事。
gzip -l 读的是压缩包头部记录的信息,用其它工具生成、缺少长度字段的归档文件,压缩率那一列可能显示为负数或不可用,这时以解压后的实际大小为准。