GZIP 压缩包 (.gz)

IETF 标准

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

将 TAR 转换为 GZ

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

检查与元数据

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

选择或将文件拖放到此处

100% 浏览器端私密转换 - 文件绝不会离开您的设备

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

字节级文件头签名 (Magic Bytes)

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

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

1F 8B 08

ASCII 表示形式: ..\x08

标准化: IETF RFC 1952

技术规格

容器架构10-byte header (magic 0x1F 0x8B, method 8, flags, mtime, OS) followed by DEFLATE stream and 8-byte footer
压缩方式DEFLATE algorithm (LZ77 sliding window + Huffman coding)
字节序Little-Endian header and footer integers
色彩空间N/A (Archive Container)
通道与结构Single-file compressed byte stream
最大尺寸Uncompressed size recorded modulo 2^32 (supports unbounded stream lengths)
透明度100% bit-exact lossless data preservation
流式传输与渐进式加载Sequential single-pass streaming playback over pipes and HTTP networks

技术对比矩阵: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 Gzip 提取器提取部分内容。

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

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

已知攻击向量

  • 将数兆字节的 Gzip 数据扩展到数百 GB 磁盘空间的解压炸弹(zip 炸弹)。
  • 从头部读取可选的原始文件名字符串时发生缓冲区溢出。
  • 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 文件,完全无需安装任何软件。