LinuxProativo/tar_minimal
GitHub: LinuxProativo/tar_minimal
一个极简的 Rust TAR 归档库,专注打包和解压两个核心功能,原生支持 Zstd 压缩,专为类 Unix 环境的自动化部署和日志处理场景优化。
Stars: 2 | Forks: 0
tar_minimal - 极简 Rust TAR 归档库
### `tar_minimal` 是一个极简、高性能的 Rust TAR 归档库,支持 Zstd 压缩,专为类 Unix 环境设计。 它是 `tar-rs` 等功能全面型归档 crate 的专注、“零花哨”替代品。在库功能日益繁重的当下,本 crate 专为只需要两项功能的开发者开辟了一席之地:打包目录和解压包,并由 Zstd 提供一流的压缩支持。 它专为自动化部署系统、日志轮替工具和载荷交付机制而设计,在这些场景中,构建时间、二进制大小和执行速度远比支持旧格式或跨平台边缘情况更为重要。 ## 🛠 核心特性 * **Unix 原生核心** 利用 Unix 特有的 trait 处理文件权限(mode)和元数据,确保在 Linux/BSD 上的保真度。 * **Zstd 为中心** 与其他将压缩视为次要功能的库不同,`tar_minimal` 最初就是围绕 Zstd 流设计的。 * **安全第一** 内置针对解压时路径遍历(Path Traversal)攻击的保护机制。 * **精简依赖树** 零膨胀。我们默认避免使用 walkdir 等重型 crate 或复杂的异步 runtime。 ## ⚠️ 适用范围与关键限制 本库高度专业化。为了保持其“极简”地位,我们明确选择不实现某些功能: * **不支持随机访问/列表** 无法列出文件或从归档中读取单个文件。这是“流输入”(Builder)或“流输出”(Decoder)架构。 * **不支持 Windows** 虽然可能编译通过,但不保证也不测试 Windows 上的文件权限和路径处理。 * **严格的格式支持** 目前仅保证并测试了与 Zstd 的集成。Gzip、Bzip2 或 Xz 等其他格式尚未验证。 * **仅限基本元数据** 我们处理标准权限(UID/GID/Mode/MTime),但不支持扩展属性(xattrs)、ACL 或复杂的 PAX 头。 * **无就地更新** 归档一旦创建即不可变。无法向现有的 `.tar.zst` 包中追加或删除文件。 ## 📦 用法 ``` [dependencies] tar_minimal = "0.1.0" zstd = "0.13" ``` ## 📁 创建归档/包(TAR + Zstd) ``` use tar_minimal::Builder; use zstd::stream::write::Encoder; use std::fs::File; fn main() -> std::io::Result<()> { let file_writer = File::create("bundle.tar.zst")?; let mut enc = Encoder::new(file_writer, 5)?; enc.long_distance_matching(true)?; let mut encoder = enc.auto_finish(); { let mut builder = Builder::new(&mut encoder); builder.append_dir_all("myapp_bundle", "/path/to/source")?; builder.finish()?; } Ok(()) } ``` ## 📤 解压归档/包 ``` use tar_minimal::Decoder; use zstd::stream::read::Decoder as ZstdDecoder; use std::fs::File; fn main() -> std::io::Result<()> { let file_reader = File::open("bundle.tar.zst")?; let zstd_decoder = ZstdDecoder::new(file_reader)?; let mut decoder = Decoder::new(zstd_decoder); decoder.unpack("/path/to/extract")?; Ok(()) } ``` ### 📦 设计理念(基于功能的扩展) 为了保持 `tar_minimal` 的极简性质: * **核心保持 Unix + Zstd 专注** 这是保证稳定且经过优化的路径。 * **所有扩展功能均位于 Cargo 功能开关之后** 无隐藏依赖或意外行为。 * **用户仅需为其启用的功能付费** 无论是编译时间还是依赖复杂性。 这确保了该 crate 可以从超轻量级工具扩展到更高级的用例,而不会损害其最初的目标。 ### ⚙️ 可选功能 — 核心范围之外 如果满足以下条件,可以考虑核心最小归档流水线之外的功能: * **与核心逻辑清晰隔离** 清晰的模块边界,无交叉污染。 * **不臃肿默认构建** 零功能体验必须保持快速和小体积。 * **遵循 Rust 功能最佳实践** 可预测的标志,无隐式启用,以及清晰的文档。 ## 📄 许可证 本项目基于 MIT 许可证授权。详情请参阅 `LICENSE` 文件。标签:BSD, LangChain, Rust, TAR, Unix, Zstd, 压缩, 可视化界面, 安全, 库, 应急响应, 归档, 数字足迹, 数据挖掘, 文件打包, 无膨胀, 日志轮转, 目录解压, 系统编程, 网络流量审计, 自动部署, 超时处理, 路径遍历防护, 轻量级, 载荷投递, 通知系统