磁盘只剩一点空间,偏偏要解一个巨大的压缩包,是很多人都遇到过的死局:传统解压工具要求压缩包和解压出来的文件同时存在,180 GB 的包解出 200 GB 的文件,就得准备 380 GB 的空闲空间,空间不够就只能先删东西腾地方。刚在 GitHub 走红的开源工具 HatchZip 换了个思路:解压的同时把压缩包本身一点点「吃掉」,解完之后磁盘上只剩下解出来的文件。

从尾部倒着解,解完一段截掉一段
HatchZip 的核心原理并不复杂。ZIP 和 7z 的索引都存在文件末尾,它先把索引存到一个小的进度文件里,然后从压缩包的最后一部分开始倒着解,每解完一批,就把压缩包截短到这一批开始的位置。腾出来的空间马上可以给下一批文件用,所以磁盘上永远不会同时装着整个压缩包和全部解出文件。

拿作者的例子算一笔账:180 GB 的游戏下载解压后是 200 GB,用 WinRAR、7-Zip 或 unzip 需要 380 GB 空闲空间,HatchZip 只需要 200 GB 出头。解压前它会先算一遍空间够不够,不够就直接拒绝、一个字节都不动,而不是解到一半才报错。
实测数据:在只剩 50 MB 的盘上解 200 MB 的包
作者用同一份 200 MB 游戏数据(21 个文件)、在只有约 50 MB 空闲的 220 MiB 磁盘上做了对比,条件写得相当实在:
| 压缩包 | unzip / 7-Zip | HatchZip |
|---|---|---|
| ZIP,180 MB | 解到第 6 个文件时空间耗尽 | 全部解完,逐字节一致 |
| 7z(7-Zip 25.01,10 个固实块) | 需要 380 MB | 0.64 秒解完,逐字节一致 |
| 7z 分卷(5 卷,每卷 40 MB) | 需要 380 MB | 解完,峰值占用 210 MB,分卷逐个删除 |
| tar,200 MB | 需要 400 MB | 0.12 秒解完,逐字节一致 |
速度上也有优势:同一份 ZIP 数据 HatchZip 用 0.25 到 0.35 秒,unzip 6.00 要 1.48 到 1.50 秒(且 HatchZip 还多做了一次 unzip 省掉的 fsync 落盘)。不过作者也注明,并行解压是速度来源,包里只有一个大文件时速度就是单核速度。
支持的格式不少,覆盖日常所需
- ZIP / ZIP64,含自解压 .exe,Stored、Deflate、Deflate64、bzip2、LZMA、PPMd、XZ、Zstandard 编码都测过;
- 7z,固实与非固实,LZMA2、LZMA、bzip2、Deflate、PPMd 等;
- tar、.tar.gz / .tgz,含多成员 gzip 与分卷 .tar.gz.001;
- 分卷压缩包(.001、.002……),ZIP 或 7z 分卷,解空一卷删一卷;
- RAR / RAR 5 / RAR 4,发行版内置 UnRAR 解码(cargo 安装的版本不带 RAR 支持);
- 带密码的 ZIP 和 7z,先拿一个文件验证密码,密码不保存,断点续解时要重新输入。
此前介绍过的 PeaZip 也是开源免费的解压工具,不过它走的是常规解压路线,空间不够的问题依然存在;需要在线处理超大文件的话,也可以看看 GigaZip 这个在线超大文件压缩解压工具。HatchZip 的差异点就在于「原地解压」这个机制本身。
敢删自己输入的工具,安全机制是重点
一个会在解压过程中删除压缩包的工具,最怕的就是中途出事丢文件。HatchZip 对此下了不少功夫:
- 先算账再动手:解压前完整推演一遍,找出整个过程中最吃空间的时刻,而不是只算总量;默认始终保留 2 GB 空闲(可用 –keep-free 调整),磁盘不会被填到零;
- 落盘后再截断:每个文件写入、刷到物理磁盘、重命名到位之后,才截掉压缩包里对应的部分,中途崩溃也只会是「文件已落地」或「字节还在包里」二选一;
- 随时可停可续:按 Ctrl+C 会先把手头文件写完、保存进度再退出,之后用同一条命令继续;断电、崩溃、磁盘被别的东西占满也一样能续;
- 不想继续可以还原:hatchzip restore 能把剩下的压缩包恢复成普通压缩包,里面恰好是还没解出的内容,7-Zip、WinRAR 照常能打开;
- 损坏与恶意包先拦下:每个文件解压时校验 CRC-32,损坏的文件不写出、留在包里;会逃出输出目录的路径、重叠条目、重复条目、setuid/setgid 位都会被拒绝。
当然它也有保护不了的情况:如果下载本身就是坏的,坏点之前的文件能解出来,但压缩包已经被部分消耗了,无法复原。对无法重新下载的文件,记得用 –verify-first 先完整校验一遍再解。
安装与使用:图形界面和命令行都有
HatchZip 提供桌面应用和命令行两种形态,Windows 10 / 11、macOS(Apple Silicon 与 Intel 都有)、Linux(.deb、.rpm、AppImage)全覆盖:
- 桌面版:从官网下载安装包,右键压缩包选 HatchZip → Extract here 即可;空间不够会提前告诉你差多少;
- 命令行:
hatchzip check game.zip先看空间规划,hatchzip extract game.zip开始解压,hatchzip list / test可以查看内容或校验; - 包管理器:macOS / Linux 可用
brew install xevrion/tap/hatchzip,有 Rust 环境也可以cargo install hatchzip(不带 RAR 支持)。
需要注意两点:一是目前安装包和 macOS 应用都还没签名,Windows 会弹「Windows 已保护你的电脑」,选「更多信息」→「仍要运行」;macOS 则需要在「系统设置 → 隐私与安全性」里放行一次。二是只从项目仓库的 Releases 页和 hatchzip.dev 下载,作者明确指出 hatchzip.com 之类同名站点与本项目无关。
局限也要说在前面
- 用 7-Zip 默认设置压出的单个固实块 7z,必须等整个块全部解出才能释放空间,需要的空闲空间就是整个块的大小,check 会提前算给你看;
- .tar.zst、.tar.xz 目前会被直接拒绝,属于计划中功能;
- 固实 RAR 只能在保留压缩包模式(–keep-archive)下解;
- 在 btrfs 或 APFS 上,如果快照里包含这个压缩包,快照删掉之前空间不会真正释放。
总的来说,HatchZip 解决的是一个很具体但很真实的痛点:磁盘快满时解大包。项目 2026 年 10 月 21 日才创建,几天内已经拿到 1700 多星,MIT / Apache-2.0 双协议开源,感兴趣可以直接去仓库看看。
转自 GitHub 作者 xevrion 的文章《HatchZip》,原文链接:https://github.com/xevrion/hatchzip;官网:https://hatchzip.dev












暂无评论内容