gzip 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
gzip——压缩与归档命令族(见压缩、归档与备份命令族)。.tar.gz是 Linux 世界里最常见的分发包格式,背后就是它。
gzip 用 DEFLATE 算法压缩单个文件(默认删原文件、加 .gz)。它通常和 tar 配合做"打包+压缩",是 .tar.gz 的压缩引擎。
一、基本用法
bash
gzip file.log # 压缩成 file.log.gz(删原文件)
gzip -k file.log # -k 保留原文件
gzip -d file.log.gz # -d 解压
gzip -9 file # -9 最高压缩率(最慢)
gzip -1 file # -1 最快(压缩率低)默认级别 6,平衡好。
-k保留原文件(默认删)。-d解压,等价gunzip。单文件压缩是 gzip 本职;目录要先 tar 再压。
二、与 tar 结合
bash
tar -czf archive.tar.gz dir/ # -z 调用 gzip 打包压缩
tar -xzf archive.tar.gz # 解包日常说的
.tar.gz就是tar -czf。现代 tar 原生支持-z(gzip)、-j(bzip2)、-J(xz)、--zstd(zstd),一条命令打包压缩。
三、gzip vs zstd vs xz
| 工具 | 速度 | 压缩率 |
|---|---|---|
gzip | 中 | 中 |
| zstd | 快 | 接近 xz(见zstd 命令详解) |
| xz | 慢 | 最高(见xz 命令详解) |
兼容性首选 gzip(几乎无处不在);要更快更省用 zstd;要极限压缩率用 xz。纯 Linux 内部分发现在更推荐
tar.zst。
四、踩坑:gzip 压的是单文件
bash
gzip dir/ # 错误:gzip 不递归目录,只对目录本身无意义
tar -czf dir.tgz dir/ # 正确:先 tar 打包再压gzip 不能直接压目录(不像 zip 的
-r)。目录必须先用 tar 打包。这也是为什么.tar.gz是标准组合而非.gz目录。
五、实战:压缩日志
bash
gzip -9 /var/log/app/old.log # 归档旧日志省空间(默认删原,加 -k 保留)一句话总结
gzip = 经典单文件压缩(默认删原文件加 .gz,-k 保留、-9 最高率):目录要先 tar 再压(tar -czf);兼容性最好但速度和压缩率不如 zstd/xz。跨机分发仍常用 .tar.gz。