文章总结: zipany是一款基于Go语言开发的跨平台目录压缩工具,支持tar.gz格式并提供灵活的文件过滤规则。工具内置YAML配置管理,具备黑白名单过滤、预设方案(如PHP项目打包)、分片压缩及安全防护(防路径穿越)等功能,可通过命令行快速实现目录打包与定制化压缩需求。 综合评分: 78 文章分类: 安全工具,应用安全,解决方案
【工具】zipany 跨平台目录压缩打包工具
原创
酒零 酒零
NOVASEC
2026年6月22日 14:00 湖南
在小说阅读器读本章
去阅读
0x00 前言
免责声明:继续阅读文章视为您已同意[NOVASEC免责声明].
注:本文属于推荐系列文章,所推荐内容并非全部由本团队开源实现。文章旨在分享各类优质项目,提升其关注度与影响力,文中观点仅代表作者个人看法。若您有更合适的替代项目,欢迎在留言区推荐分享,共同推荐优质项目资源。
zipany
一个基于 Go 语言的跨平台目录打包压缩工具,支持 tar.gz 格式,提供灵活的文件过滤规则和预设配置。
特性
- ✅ 跨平台支持 – Windows、Linux、macOS 全平台兼容
- ✅ tar.gz 格式 – 通用格式,解压速度快,兼容性好
- ✅ 配置文件管理 – YAML 配置文件,支持黑白名单过滤规则
- ✅ 预设配置 – 内置多种打包预设,支持自定义预设
- ✅ 安全保护 – 自动跳过软链接,防止路径穿越攻击
- ✅ 智能过滤 – 支持按文件扩展名、目录名过滤
- ✅ 空目录跳过 – 支持跳过无用的空目录
- ✅ 结果校验 – 打包完成后自动校验文件并输出统计信息
安装
从源码编译
git clone https://github.com/winezer0/zipany.gitcd zipany go build -o zipany .
快速开始
基本用法
# 打包目录(使用默认配置,自动生成输出文件名)zipany -s ./project# 打包目录(指定输出文件)zipany -s ./project -o ./project.tar.gz# 使用配置文件zipany -s ./project -o ./project.tar.gz -c config.yaml# 使用 PHP 预设zipany -s ./project -o ./project.tar.gz -p php# 使用命令行扩展名过滤 白名单模式打包zipany -s ./project -o ./project.tar.gz -p "ext:php,tpl,vue" -w
分片压缩
因为 gzip 的压缩字典是跨文件的,要直接生成完全独立的可单独解压的多个 .tar.gz 较为复杂,且在很多场景下解压并不兼容。
流级别分片可以将输出的压缩包自动截断为 .part1 , .part2 等文件,解压前只需要用 cat archive.tar.gz.part* > archive.tar.gz 合并即可。
# 生成普通不分片压缩包
zipany -s /path/to/source -o output.tar.gz
# 将压缩包限制在最大 100MB,如果超出则会生成 output.tar.gz.part1, output.tar.gz.part2 ...
zipany -s /path/to/source -o output.tar.gz -S 100
解压分片压缩包方法(系统内置):
Windows 命令行:
copy /b output.tar.gz.part* output.tar.gz
tar -xzf output.tar.gz
Linux/Mac 命令行:
cat output.tar.gz.part* > output.tar.gz
tar -xzf output.tar.gz
生成默认配置文件
zipany --gen
这将生成一个 zipany.yaml 配置文件,包含默认过滤规则和预设配置。
列出所有预设
zipany --list
这将输出当前配置文件中所有可用的预设名称。
命令行参数
| 参数 | 简写 | 说明 |
| — | — | — |
| --source | -s | 源目录路径(必需) |
| --output | -o | 输出压缩包路径(可选,默认自动生成) |
| --config | -c | 配置文件路径(可选) |
| --preset | -p | 预设配置名称(默认:common),支持 ext:xxx,xxx 或 dir:xxx,xxx 格式 |
| --gen | | 生成默认配置文件到 <ConfigPath> |
| --list | | 列出配置文件中的所有预设 |
| --white | -w | 白名单模式:仅保留预设中的扩展名列表 |
| --se | | 跳过空目录 |
| --no-bar | -n | 不显示进度条 |
| --version | -v | 输出版本信息 |
| --lf | | 日志文件路径(默认:不输出到文件) |
| --ll | | 日志级别(debug/info/warn/error,默认:info) |
| --cf | | 控制台日志格式(T L C M F 组合或 off|null 禁用,默认:M) |
配置文件
配置文件结构
# 预设配置示例presets: php: description: "常见的 PHP 保存方案"stored_ext: - php - tpl - vueignore_ext: - jpg - png - mp3 - mp4ignore_dir: - ".cache" - "tmp" - "node_modules" - "vendor"
配置说明
白名单模式 (stored_ext)
- -w 启用白名单模式
- 只保留指定扩展名的文件
- 其他所有文件都会被排除
黑名单模式 (ignore_ext, ignore_dir)
- 默认使用黑名单模式
- 排除
ignore_ext中指定的文件扩展名 - 排除
ignore_dir中指定的目录名 - 其他文件和目录都会被包含
预设配置
程序内置了 多种预设, 示例 php 预设,适用于 PHP 项目打包:
-
保留文件
:
.php,.tpl,.vue -
忽略文件
: 图片 (jpg, jpeg, png, bmp, gif, webp)、音视频 (mp3, mp4, avi, mov, wmv)、压缩包 (zip, rar, 7z)
-
忽略目录
:
.cache,.temp,tmp,temp,.git,node_modules,vendor
使用示例
示例 1: 打包 PHP 项目
# 使用 PHP 预设打包zipany -s /var/www/myapp -o /backup/myapp.tar.gz -p php
输出:
使用配置文件:config.yaml
源目录:/var/www/myapp
输出文件:/backup/myapp.tar.gz
使用预设:php
过滤规则已启用
开始打包...
打包完成!
输出文件:/backup/myapp.tar.gz
文件大小:2.35 MB
文件数量:156
目录数量:23
示例 2: 使用自定义配置文件
# 生成配置文件zipany --gen# 编辑 zipany.yaml,添加自定义规则# 使用自定义配置打包zipany -s ./src -o ./output.tar.gz -c myconfig.yaml
示例 3: 打包时跳过空目录
# 跳过空目录zipany -s ./project -o ./project.tar.gz --se
构建发布版本
# WindowsCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o zipany.exe .# LinuxCGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o zipany .# macOSCGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o zipany .
常见问题
Q: 如何排除特定大小的文件?
A: 当前版本不支持按文件大小过滤,可以通过 Issue 提出此需求。
Q: 支持 zip 格式吗?
A: 当前仅支持 tar.gz 格式,未来版本可能会添加其他格式支持。
Q: 配置文件放在哪里?
A: 程序会在当前工作目录和/.config/目录,自动查找 zipany.yaml文件, 未找到配置文件路径时默认使用内置配置文件,也可以使用 -c 参数指定路径。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:NOVASEC 酒零 酒零《【工具】zipany 跨平台目录压缩打包工具》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论