高效并发的 ZIP 文件压缩与解压工具,兼容 PKZIP 2.04g 版本。
参考文档:PKWARE APPNOTE
- 多协程支持:快速并行处理 ZIP 文件的压缩与解压
- ZIP64 支持:处理大于 4GB 的文件及超大档案
- 兼容 PKZIP 2.04g 版本:确保与传统 ZIP 工具的兼容性
- 支持原生参数:兼容
zip
和unzip
的常用命令行参数,易于集成到现有工作流中
go install github.com/zdz1715/pzip/cmd/pzip@latest
go install github.com/zdz1715/pzip/cmd/punzip@latest
git clone https://github.com/zdz1715/pzip.git
cd pzip
make release-snapshot
二进制包会生成在 dist
目录下。
- 操作系统:Ubuntu 20.04
- CPU:Intel(R) Xeon(R) Gold 6254 CPU @ 3.10GHz(16核)
- 内存:16GB
- 测试文件大小:23GB
使用原生zip
命令:
$ time zip -r -q test-zip.zip bigdata-dir
real 14m7.312s
user 13m34.856s
sys 0m21.796s
使用pzip
命令:
$ time pzip -r -q test-pzip.zip bigdata-dir
real 1m30.363s
user 3m42.956s
sys 1m10.184s
压缩效率大约提升了9.4
倍,节省了89.6%
时间。
使用原生unzip
命令:
$ time unzip -q test-zip.zip
real 2m26.580s
user 2m10.276s
sys 0m14.364s
使用punzip
命令:
$ time punzip -q test-pzip.zip
real 0m28.078s
user 1m38.200s
sys 0m16.384s
解压效率大约提升了3.22
倍,节省了68.9%
时间。
使用原生zip
命令:
$ time zip -r -q test-zip.zip bigdata-dir
real 21m46.643s
user 18m25.877s
sys 1m56.902s
使用pzip
命令:
$ time pzip -r -q test-pzip.zip bigdata-dir
real 6m30.449s
user 10m17.789s
sys 11m14.409s
压缩效率大约提升了3.5
倍,节省了71.43%
时间。
使用原生unzip
命令:
$ time unzip -q test-zip.zip
real 5m55.984s
user 3m36.254s
sys 1m45.136s
使用punzip
命令:
$ time punzip -q test-pzip.zip
real 3m37.963s
user 4m51.073s
sys 7m9.020s
解压效率大约提升了1.64
倍,节省了38.8%
时间。
相关 issue:
- archive/zip: zip64 extra headers problems · Issue #33116 · golang/go
- [zip] 7z complains about "Headers Error" when large files are added to a zip archive · Issue #623 · klauspost/compress
相关 issue: