GZIP 压缩包 (.gz)

IETF 标准

Gzip (GZ) 是标准的 GNU 压缩实用程序和文件格式,广泛部署在 Unix 操作系统和互联网 HTTP 服务器上,用于快速文件和网络资产压缩。

将 TAR 转换为 GZ

免费的浏览器端 TAR 转 GZ 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 GZ 文件:

选择或将文件拖放到此处

隐私保护 - 文件不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (魔数)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 GZ 文件:

十六进制签名 (偏移量 0):

1F 8B 08

ASCII 表示形式: ..\x08

标准化: IETF RFC 1952

技术规格

容器架构10 字节文件头(魔数 0x1F 0x8B、方法、标志、修改时间和操作系统),后接 DEFLATE 流和 8 字节文件尾
压缩方式DEFLATE 算法(LZ77 滑动窗口 + 霍夫曼编码)
字节序文件头和文件尾中的整数采用小端序
色彩空间不适用(压缩包容器)
通道与结构单文件压缩字节流
最大尺寸未压缩大小以模 2^32 记录(支持任意长度的数据流)
透明度100% 按位精确地无损保留数据
流式传输与渐进式加载支持通过管道和 HTTP 网络进行单遍顺序流式传输

技术对比矩阵:GZ 对比同类产品

技术属性GZ (当前)BZ2BROTLIZSTD
解压速度快(约 300 MB/s)慢(约 40 MB/s)非常快(约 400 MB/s)极快(>1.5 GB/s)
在网络上广泛使用100% 的浏览器和服务器网页浏览器均不支持所有浏览器中均通过 HTTPS 支持浏览器和服务器的支持度不断提高
多文件打包需要 TAR 容器(.tar.gz)需要 TAR 容器(.tar.bz2)原始流或自定义容器需要 TAR 容器(.tar.zst)
校验和验证32 位 CRC(CRC-32)每块 32 位 CRC流中无内置校验和64 位 xxHash

常见损坏模式与十六进制恢复指南

提取错误:“gzip: stdin: unexpected end of file”(gzip:标准输入意外到达文件末尾)。

根本原因: 过早的文件传输终止切断了 DEFLATE 流或 8 字节 CRC32 页脚。

恢复方法: 使用“gzip -d --keep broken.gz”或 File2File.app Gzip 提取器提取部分内容。

安全分析与解析器攻击向量

Gzip 解析器处理用户控制的头部和 DEFLATE 位流,必须防范解压炸弹。

已知攻击向量

  • 解压炸弹(ZIP 炸弹)可将数 MB 的 Gzip 数据膨胀为数百 GB 的磁盘占用。
  • 从头部读取可选的原始文件名字符串时发生缓冲区溢出。
  • 32 位 CRC 检查比较过程中的整数溢出。

防御性最佳实践: 在自动化摄取服务中强制实施严格的解压配额和内存上限。

历史渊源与里程碑

1996IETF 将 Gzip 文件格式规范正式确立为 RFC 1952。
1993被 GNU 项目采用,以取代专有的 Unix"compress"实用程序(.Z 文件)。
1992Jean-loup Gailly 和 Mark Adler 为自由软件运动创建了 Gzip 作为无专利的压缩工具。

核心优势与特点

  • 受到 100% 网络客户端支持的互联网 HTTP 压缩("Content-Encoding: gzip")的通用基准。
  • 在 10 字节头部内保留原始文件修改时间戳和可选的原始文件名。
  • 解压时 CPU 占用轻量,在低功耗移动设备和路由器上运行流畅。

技术局限与劣势

  • 仅支持单文件压缩:如果不先将多个文件或目录捆绑到 TAR 容器中,就无法压缩它们。
  • 在现代网络文本上,压缩率低于 Brotli 和 Zstandard 等现代算法。
  • 页脚中的未压缩大小字段以 32 位模 2^32 记录,因此大于 4 GB 的文件会出现数值回绕。

趣味技术冷知识

  • 选择魔数字节 0x1F 0x8B,是因为 0x1F 曾是 Unix“compress”文件的首字节,而 0x8B 用于标识 Gzip。
  • 互联网上超过 80% 的网站都使用 Gzip 压缩来向浏览器交付网页。
  • Jean-loup Gailly 编写了压缩代码,而 Mark Adler 编写了解压(inflate)代码;两人都获得了 ACM 软件系统奖。

常见技术问题

为什么我无法使用 Gzip 压缩文件夹?

Gzip 用于压缩单个字节流。要压缩文件夹,Unix 系统会先将文件夹打包成单个 .tar 文件,再用 Gzip 压缩,生成 .tar.gz 文件。

.gz 和 .zip 有什么区别?

.zip 是一种归档格式,它将多个文件连同目录索引打包在一起。.gz 仅压缩单个文件,通常在 Unix 系统中与 tar 搭配使用。

如何在 Windows 或 Mac 上解压 .gz 文件?

使用 File2File.app,无需安装软件,即可直接在网页浏览器中快速解压 .gz 文件。