【工具】zipany跨平台目录压缩打包工具

admin 2026-06-26 07:30:22 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: zipany是一款基于Go语言开发的跨平台目录压缩工具,支持tar.gz格式并提供灵活的文件过滤规则。工具内置YAML配置管理,具备黑白名单过滤、预设方案(如PHP项目打包)、分片压缩及安全防护(防路径穿越)等功能,可通过命令行快速实现目录打包与定制化压缩需求。 综合评分: 78 文章分类: 安全工具,应用安全,解决方案


cover_image

【工具】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) |

配置文件

配置文件结构

#&nbsp;预设配置示例presets: &nbsp;php: &nbsp; &nbsp;description:&nbsp;"常见的 PHP 保存方案"stored_ext: &nbsp; &nbsp; &nbsp; -&nbsp;php&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;tpl&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;vueignore_ext: &nbsp; &nbsp; &nbsp; -&nbsp;jpg&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;png&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;mp3&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;mp4ignore_dir: &nbsp; &nbsp; &nbsp; -&nbsp;".cache"&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;"tmp"&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;"node_modules"&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;"vendor"

配置说明

白名单模式 (stored_ext)

  • -w 启用白名单模式
  • 只保留指定扩展名的文件
  • 其他所有文件都会被排除

黑名单模式 (ignore_extignore_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.temptmptemp.gitnode_modulesvendor

使用示例

示例 1: 打包 PHP 项目

#&nbsp;使用 PHP 预设打包zipany -s /var/www/myapp -o /backup/myapp.tar.gz -p php

输出:

使用配置文件:config.yaml
源目录:/var/www/myapp
输出文件:/backup/myapp.tar.gz
使用预设:php
过滤规则已启用
开始打包...

打包完成!
&nbsp; 输出文件:/backup/myapp.tar.gz
&nbsp; 文件大小:2.35 MB
&nbsp; 文件数量:156
&nbsp; 目录数量:23

示例 2: 使用自定义配置文件

#&nbsp;生成配置文件zipany --gen#&nbsp;编辑 zipany.yaml,添加自定义规则#&nbsp;使用自定义配置打包zipany -s ./src -o ./output.tar.gz -c myconfig.yaml

示例 3: 打包时跳过空目录

#&nbsp;跳过空目录zipany -s ./project -o ./project.tar.gz --se

构建发布版本

#&nbsp;WindowsCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o zipany.exe&nbsp;.#&nbsp;LinuxCGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o zipany&nbsp;.#&nbsp;macOSCGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o zipany&nbsp;.

常见问题

Q: 如何排除特定大小的文件?

A: 当前版本不支持按文件大小过滤,可以通过 Issue 提出此需求。

Q: 支持 zip 格式吗?

A: 当前仅支持 tar.gz 格式,未来版本可能会添加其他格式支持。

Q: 配置文件放在哪里?

A: 程序会在当前工作目录和/.config/目录,自动查找 zipany.yaml文件, 未找到配置文件路径时默认使用内置配置文件,也可以使用 -c 参数指定路径。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:NOVASEC 酒零 酒零《【工具】zipany 跨平台目录压缩打包工具》

评论:0   参与:  0