下载的配置文件、日志包、软件源码经常是 .gz 后缀,双击打不开,Windows 还可能提示“不支持此文件类型”。它其实是很常见的一种压缩格式。

gz 是什么

gz 是 gzip 压缩格式,由 GNU 项目推出,Linux 上几乎每个发行版都自带。它的特点是只压缩单个文件,不负责打包多个文件,也不记录目录结构。压缩后原文件名会带上 .gz,比如 access.log 变成 access.log.gz。

gzip 不保存原始文件名,解压时只能靠文件名推断。所以有人在压缩时丢了扩展名,解压出来就是一个没有后缀的文件。

和 tar.gz 是两回事

在 Linux 上要打包一个目录,标准做法是先用 tar 打包,再用 gzip 压缩,结果就是 .tar.gz,也常写成 .tgz。理解方式很简单:tar 负责装箱,gzip 负责压扁箱子。

tar -czvf site.tar.gz ./site

所以遇到 .tar.gz,解压一步到位:

tar -xzvf site.tar.gz

而单独的 .gz,解压后只得到一个文件:

gzip -dk access.log.gz

Windows 上怎么打开

Win10 以后系统自带 tar.exe,命令行里直接:

tar -zxvf site.tar.gz

单独的 gz 文件,7-Zip、Bandizip 右键解压即可。注意 7-Zip 解压 .gz 时会得到内部的那一个文件,如果内部是个 tar,还要再解压一次。

Nginx 日志轮转为什么都是 gz

logrotate 每天把日志重命名并压缩成 .gz,既省空间又方便归档。用 zcat 或 zgrep 不用解压就能查:

zgrep "500 " access.log.1.gz

几个小问题

  • 解压后文件名变成无后缀:用 gzip -N 可以保留原始文件名和时间戳,但需要压缩时有记录;
  • 提示“not in gzip format”:文件可能不是 gz,只是扩展名写错,用 file 命令确认;
  • 中文文件名乱码:Windows 与 Linux 的编码差异导致,用 7-Zip 或 tar 指定编码参数。