
在日常下载大型游戏、AI 模型、影视素材、完整数据集或者做系统备份还原的,应该都遇到过一个极其尴尬的局面:磁盘空间明明够放解压后的内容,但系统却弹窗提示空间不足。
原因很简单:传统的解压工具(无论是 7-Zip、WinRAR 还是系统的 unzip)采用的都是“全量保留”策略。如果一个压缩包有 180 GB,解压后需要 200 GB,那么你在解压过程中必须同时腾出 380 GB 的可用空间。对于很多固态硬盘容量捉襟见肘、只剩 200 多 GB 剩余空间的用户来说,往往得被迫卸载其他软件或外接移动硬盘倒腾,非常繁琐。
最近开源的 HatchZip,解决的正是这个问题。
HatchZip:https://github.com/xevrion/hatchzip
HatchZip 是一个用 Rust 编写的高性能解压工具,其核心设计理念是:原地解压,压缩包像“破壳”一样随着文件释放而同步缩小。
传统解压方式必须等到全部文件提取完成,用户才能手动删除源压缩包。而 HatchZip 则是在解压过程中,一边释放文件,一边将已经解压完的源数据部分从磁盘上“就地裁剪”(Truncate/Punch Hole)释放回操作系统。
还是以 180 GB 压缩包、解压后 200 GB 为例:
传统工具:需要 180 GB + 200 GB = 380 GB 可用空间。
HatchZip:只需略大于 200 GB 的可用空间即可顺利完成。
HatchZip 的核心功能亮点:
1. 倒序解压与就地裁剪(Extract & Truncate)
- 对于 ZIP 格式,文件目录信息(Central Directory)通常存放在文件尾部。HatchZip 会先解析并暂存元数据,随后从后往前提取数据块。每解压完一部分,就通过底层文件系统操作直接截断/收缩文件尾部,把空间即时还给磁盘。
2. 多格式与分卷支持
- 支持标准 ZIP(含 ZIP64、自解压 exe)、7z、tar、tar.gz 以及常见的分卷压缩格式(如 .001、.002)。对于分卷包,更可以在某个分卷解压完后直接安全清除该分卷。
3. 安全第一:预先校验与保留余量
- 空间预检:在改动任何底层字节之前,HatchZip 会预估解压后的体积并对比可用空间,一旦空间不足直接拒绝执行,避免中途写满磁盘。
- 安全防线:默认保留 2 GB 磁盘空闲缓冲(可通过 –keep-free 调整),绝不把磁盘写到 0 字节卡死系统。
- 断点续解:解压过程中无论是按下 Ctrl+C 中断还是意外关机崩溃,重新执行原命令即可直接断点续传继续解压。
- 文件校验:解压同时逐文件进行 CRC-32 校验,防止数据静默损坏。
4. 跨平台与开箱即用
- 全面支持 Windows (NTFS)、macOS (APFS) 和 Linux (ext4/XFS/btrfs) 等支持文件收缩的文件系统。
- 既提供类似 7-Zip 的右键菜单/GUI 界面,也提供命令行指令 hatchzip(别名 hz)。
针对「没有足够空间解压」这个问题,HatchZip 采用的是一种非常特别的思路:边解压、边删除已经用不到的压缩数据,把释放出来的空间继续交给后面的文件。
但业内其实还有另外一条路线:根本不要完整解压,而是直接把压缩包挂载成文件夹甚至系统盘符,需要哪个文件时再临时解压哪个文件。
这类工具本质上是在压缩格式上加了一层虚拟文件系统。对于操作系统和应用程序来说,挂载的就是普通目录,但磁盘上始终只有原来的压缩包,并不会产生额外解压目录。
这类工具比较典型的有:
Ratarmount
https://github.com/mxmlnkn/ratarmount
专门针对超大型归档和数据集设计,可以把 TAR、ZIP、RAR、GZ、BZ2、XZ、ZSTD 等压缩包直接作为文件系统访问,并且支持建立索引,非常适合 AI 数据集、服务器备份和大型媒体归档。
fuse-archive / mount-archive
https://github.com/google/fuse-archive
Google 开源的 FUSE 压缩包文件系统,支持 ZIP、RAR、7Z、ISO、TGZ、XZ 等大量格式,并提供 Lazy Extraction——只有真正读取某个文件时才进行解压。
mount-zip / zipmount
https://github.com/google/mount-zip
专门针对 ZIP 的轻量方案,可以把一个或多个 ZIP 直接挂载成只读文件系统,启动速度快、内存占用低,还支持加密 ZIP。
SimpleZipDrive
https://github.com/purelogiccode/SimpleZipDrive
对 Windows 用户更加直观,可以直接把 ZIP、7Z、RAR、TAR、ISO 等压缩文件挂载成 M:、N: 这样的虚拟磁盘,也可以挂载到普通文件夹。
ArchiveMount
https://github.com/FirTech/ArchiveMount
同样面向 Windows,可以把压缩包挂载成虚拟盘符或目录,真正访问某个文件时才解压到缓存,而不是提前展开整个压缩包。
ImDisk
https://github.com/LTRData/ImDisk
直接将 ZIP/RAR 文件虚拟成 Windows 系统盘符