# multivfs **Repository Path**: lightox/multivfs ## Basic Information - **Project Name**: multivfs - **Description**: 一个多文件系统访问库,支持跨平台操作,提供统一接口访问不同类型的文件系统,简化开发流程。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-13 - **Last Updated**: 2025-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # multivfs **multivfs** 是一个高性能的「多归档 & 分层 & 透明加解密」虚拟文件系统库,**只依赖标准库**(加密扩展除外),**零解压落盘**即可像普通 `fs.FS` 一样随机读写 zip / tar / tar.gz / 7z 等归档内的文件。 --- ## ✨ 核心特性 | 特性 | 状态 | 备注 | |---|---|---| | 多格式 | ✅ | zip / tar / tgz / 7z(插件式,可扩展) | | 分层覆盖 | ✅ | 后者同名文件自动覆盖前者 | | 随机访问 | ✅ | 支持 `io.ReaderAt`,大文件秒级 Seek | | 透明加解密 | ✅ | AES-CTR / ChaCha20 / RSA 混合,无感知 | | 零依赖 | ✅ | 仅 `golang.org/x/crypto`(加密时) | | 跨平台 | ✅ | Windows / Linux / macOS / Android | | 标准接口 | ✅ | 实现 `io/fs.FS`,与 `embed` / `http.FS` 无缝互操作 | --- ## 🚀 快速开始 ```bash go get github.com/yourname/multivfs ``` ```go package main import ( "fmt" "io/fs" "multivfs" "multivfs/cipher" "multivfs/format" "os" ) func main() { // 1. 创建分层 FS vfs := multivfs.New() // 2. 添加加密层(AES-CTR) f1, _ := os.Open("base.zip") st1, _ := f1.Stat() l1, _ := format.Open("zip", f1, st1.Size()) vfs.AddLayer(cipher.New(l1, "aes-ctr", []byte(os.Getenv("AES_KEY")))) // 3. 添加明文补丁层 f2, _ := os.Open("patch.tgz") st2, _ := f2.Stat() l2, _ := format.Open("tgz", f2, st2.Stat()) vfs.AddLayer(l2) // 4. 像普通文件一样读 data, _ := fs.ReadFile(vfs, "config.toml") fmt.Println(string(data)) } ``` 更多示例:[/example](example) --- ## 📖 文档 [https://pkg.go.dev/github.com/yourname/multivfs](https://pkg.go.dev/github.com/yourname/multivfs) --- ## 🔧 架构图 ``` ┌-------------┐ ┌-------------┐ ┌-------------┐ │ zip/tar/7z │ ... │ AES-CTR │ ... │ cha-cha20 │ 解密层 └------┬------┘ └------┬------┘ └------┬------┘ ▼ ▼ ▼ ┌-------------------------------------------------------┐ │ Unified Index (map[path]layer) │ └-------------------------------------------------------┘ ▼ ┌-------------------------------------------------------┐ │ fs.FS 兼容接口 (Open/Read/Stat) │ └-------------------------------------------------------┘ ``` --- ## 🛠️ 安装与开发 ```bash # 克隆 git clone https://github.com/yourname/multivfs.git cd multivfs # 运行测试 go test ./... # 运行示例 cd example && AES_KEY=12345678901234567890123456789012 go run main.go ``` --- ## 🤝 参与贡献 1. Fork 本仓库 2. 新建 `feat/xxx` 分支 3. 提交代码并添加单测 4. 推送后创建 `Pull Request` [查看贡献指南](CONTRIBUTING.md) --- ## 📝 许可证 [MIT](LICENSE) © 2025 yourname --- ## 🌐 国际化 | 语言 | 文档 | |---|---| | English | [Readme_en.md](Readme_en.md) | | 中文 | [Readme_zh.md](Readme_zh.md) | ---