# ebrfs **Repository Path**: xinligg/ebrfs ## Basic Information - **Project Name**: ebrfs - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EBRFS - 基于FUSE3的归档文件系统 EBRFS是一个基于FUSE3的文件系统,它将一个归档文件虚拟为目录结构。第三方程序可以通过标准的POSIX接口(open, read, write, unlink等)直接读写归档文件中的虚拟文件,就像访问普通目录一样。 ## 特性 - **透明访问**:通过FUSE挂载后,归档文件内容以目录形式呈现 - **标准接口**:支持POSIX标准文件操作(读、写、创建、删除) - **简单格式**:自定义的归档格式,易于理解和扩展 - **FUSE3兼容**:使用最新的FUSE3 API ## 编译 确保系统已安装FUSE3开发包: ```bash sudo apt-get install fuse3 libfuse3-dev # Ubuntu/Debian ``` 编译项目: ```bash make ``` 这将生成两个可执行文件: - `ebrfs`:主文件系统程序 - `ebrfs-tool`:归档文件管理工具 ## 使用方法 ### 1. 创建归档文件 ```bash ./ebrfs-tool create archive.ebr ``` ### 2. 添加文件到归档 ```bash ./ebrfs-tool add archive.ebr somefile.txt ``` ### 3. 列出归档内容 ```bash ./ebrfs-tool list archive.ebr ``` ### 4. 挂载归档文件 ```bash mkdir mountpoint ./ebrfs archive.ebr mountpoint ``` 挂载后,可以通过`mountpoint`目录访问归档内容: ```bash ls mountpoint/ # 列出归档中的文件 cat mountpoint/somefile.txt # 读取文件内容 echo "new content" > mountpoint/newfile.txt # 创建新文件 rm mountpoint/somefile.txt # 删除文件 ``` ### 5. 卸载文件系统 ```bash fusermount3 -u mountpoint ``` ## 归档格式 EBRFS使用简单的自定义格式: 1. **文件头**(64字节) - 魔数:0xEB0F5101 - 版本号 - 文件数量 - 索引区偏移 - 数据区偏移 2. **索引区**(固定大小:1024个条目 × 64字节) - 每个条目包含文件名、数据偏移、文件大小等信息 3. **数据区** - 实际文件数据连续存储 ## 实现细节 ### FUSE操作实现 - `getattr`:获取文件/目录属性 - `readdir`:读取目录内容 - `open`:打开文件 - `read`:读取文件数据 - `write`:写入文件数据 - `create`:创建新文件 - `unlink`:删除文件 ### 当前限制 - 最大文件数量:1024个 - 最大文件名长度:255字符 - 写入时不能扩展文件大小(仅支持覆盖现有数据) - 数据区碎片化:删除文件后空间不会回收 ## 示例工作流程 ```bash # 1. 创建归档 ./ebrfs-tool create mydocs.ebr # 2. 添加几个文件 ./ebrfs-tool add mydocs.ebr document1.txt ./ebrfs-tool add mydocs.ebr image.jpg ./ebrfs-tool add mydocs.ebr notes.md # 3. 列出内容 ./ebrfs-tool list mydocs.ebr # 4. 挂载 mkdir ~/mydocs ./ebrfs mydocs.ebr ~/mydocs # 5. 使用标准工具访问 cp ~/mydocs/document1.txt ~/backup/ echo "appended text" >> ~/mydocs/notes.md touch ~/mydocs/newfile.txt # 6. 卸载 fusermount3 -u ~/mydocs ``` ## 许可证 MIT