ztr 2.0.0

一个基于配置文件的智能压缩工具
ztr-2.0.0 is not a library.
Visit the last successful build: ztr-3.0.0

ZTR - 智能压缩工具

一个基于配置文件的智能压缩工具,支持多种压缩格式和灵活的文件忽略规则。

🚀 功能特性

  • 多格式支持: 支持 ZIP、TAR.GZ、7Z 三种主流压缩格式
  • 智能配置: 通过配置文件自定义压缩选项和忽略规则
  • Gitignore风格: 使用类似 .gitignore 的语法来忽略不需要的文件
  • 进度显示: 实时显示压缩进度和文件大小信息
  • 简洁易用: 默认情况下自动使用配置文件进行压缩

📦 安装

从源码编译

git clone <repository-url>
cd ztr

cargo build --release

编译后的可执行文件位于 target/release/ztr.exe (Windows) 或 target/release/ztr (Linux/macOS)。

🛠️ 使用方法

基本用法

# 直接压缩当前目录(如果存在 ztr.toml 配置文件)

ztr


# 创建默认配置文件

ztr init


# 查看支持的压缩格式

ztr show


# 使用指定配置文件压缩

ztr compress --config my-config.toml

命令说明

ztr (默认行为)

检查当前目录是否存在 ztr.toml 配置文件,如果存在则直接进行压缩。

ztr init

在当前目录创建默认的 ztr.toml 配置文件。

ztr show

显示所有支持的压缩格式及其特点。

ztr compress

压缩当前目录,可通过 --config 参数指定配置文件路径。

⚙️ 配置文件

ztr.toml 配置文件示例:

# ZTR 压缩工具配置文件



# 压缩格式: 支持 "zip", "tar.gz", "7z"

format = "tar.gz"



# 输出文件名 (可选,默认使用当前目录名)

# output_name = "my_archive"



# 忽略规则列表 (类似 .gitignore)

ignore = [

    "target/",

    "*.tmp",

    "*.log",

    ".DS_Store",

    "Thumbs.db",

    "*.swp",

    "*.swo",

    "*~",

    ".git/",

    ".svn/",

    ".hg/",

    "node_modules/",

    "__pycache__/",

    ".pytest_cache/",

    ".venv/",

    "venv/",

    "env/",

    "*.pyc",

    "*.pyo",

    "*.pyd",

    ".idea/",

    ".vscode/",

    "*.iml",

]



# 指定忽略文件路径 (可选,默认使用 .gitignore)

# ignore_file = "./.gitignore"

配置选项说明

选项 类型 必填 说明
format 字符串 压缩格式,支持 "zip"、"tar.gz"、"7z"
output_name 字符串 输出文件名,默认使用当前目录名
ignore 数组 忽略规则列表,优先级高于 ignore_file
ignore_file 字符串 指定忽略文件路径,如 .gitignore

忽略规则优先级

  1. 如果配置了 ignore 数组,则优先使用数组中的规则
  2. 如果没有配置 ignore 但配置了 ignore_file,则从指定文件读取规则
  3. 两者都没有配置则不忽略任何文件

📝 忽略规则语法

忽略规则支持以下语法模式:

模式 说明 示例
* 匹配任意字符 *.tmp 匹配所有 .tmp 文件
/ 目录分隔符 target/ 匹配 target 目录及其内容
? 单个字符 ???.txt 匹配三个字符的 .txt 文件
[] 字符范围 [abc]*.txt 匹配以 a、b 或 c 开头的 .txt 文件
! 否定规则 !important.log 不忽略 important.log 文件
# 注释 # 这是注释

🎯 支持的压缩格式

格式 特点 适用场景
zip 兼容性最好,几乎所有系统都支持 跨平台文件传输
tar.gz Linux 常用格式,压缩率适中 Linux/Unix 环境部署
7z 压缩率最高,支持多种算法 需要最大压缩率的场景

💡 使用示例

示例 1: 压缩 Rust 项目

# 在 Rust 项目根目录

ztr init

# 编辑 ztr.toml,确保包含 target/ 忽略规则

ztr

示例 2: 压缩 Node.js 项目

# ztr.toml

format = "zip"

output_name = "my-node-app"

ignore = [

    "node_modules/",

    "*.log",

    ".env",

    "dist/",

    "coverage/",

]

示例 3: 使用现有的 .gitignore

# ztr.toml

format = "tar.gz"

ignore_file = "./.gitignore"

🔧 开发

项目结构

ztr/
├── src/
│   ├── main.rs          # 主程序入口
│   ├── config.rs        # 配置文件解析
│   ├── compressor.rs    # 压缩功能实现
│   └── ignore_rules.rs  # 忽略规则处理
├── Cargo.toml           # 项目依赖配置
├── ztr.toml           # 默认配置文件示例
└── README.md           # 项目说明文档

依赖库

  • clap: 命令行参数解析
  • serde: 序列化/反序列化
  • toml: TOML 配置文件解析
  • zip: ZIP 格式支持
  • tar: TAR 格式支持
  • flate2: GZIP 压缩支持
  • sevenz-rust: 7Z 格式支持
  • ignore: Gitignore 风格的文件过滤
  • indicatif: 进度条显示
  • anyhow: 错误处理

📄 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

🤝 贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📞 反馈

如果您在使用过程中遇到问题或有改进建议,请:

  • 提交 Issue
  • 发送邮件至:[your-email@example.com]

ZTR - 让压缩变得简单而智能! 🎉