3个版本 (稳定版)
1.0.1 | 2023年11月11日 |
---|---|
1.0.0 | 2021年4月20日 |
0.1.0 | 2021年4月13日 |
#301 in 文件系统
33KB
823 行
archivefs
Archivefs是一个只读的FUSE文件系统,用于挂载压缩存档,受archivemount启发。
特性
- 将libarchive支持的任何存档文件只读地挂载到目录中
- 与archivemount相比,解压缩速度快几个数量级
存档格式
Archivefs支持libarchive支持的所有格式,包括但不限于
- tar (使用gzip、bzip2、xz、zstd压缩)
- cpio
- ISO9660(包括Joliet和Rockridge扩展)
- zip
- 7-Zip
请注意,libarchive在读取rar存档时存在已知错误。
系统要求
运行
- Linux内核3.15或更高版本(虽然FUSE可以在其他操作系统上工作,但archivefs使用的polyfuse crate目前仅支持Linux)
fusermount
命令(通常由fuse
或fuse2
包提供)- libarchive
编译
- Rust 1.31或更高版本
- libarchive的开发文件(通常由
libarchive-dev
或libarchive-devel
包提供)
构建man页面
- Python 3.5或更高版本
- AsciiDoc
安装
# This will install only the archivefs executable in $HOME/.cargo/bin, without any
# man page. Also, make sure that the $HOME/.cargo/bin directory is in your PATH
cargo install archivefs
# Alternatively, you can build from source using the command
cargo build --release
# and then copy the file target/release/archivefs somewhere in your PATH
# To build the man page:
a2x -f manpage doc/archivefs.1.adoc
# and then copy the file doc/archivefs.1 in a man path (like $HOME/.local/share/man/man1 )
用法
archivefs [OPTIONS] ARCHIVEPATH MOUNTPOINT
示例会话
考虑包含文件file1
和file2
的gzip tar存档files.tgz
,以及一个空目录mnt
。
$ ls
files.tgz mnt/
# Mount the archive file
$ archivefs files.tgz mnt
$ ls mnt
file1 file2
# Perform desired read operations on the archive via mnt/
# For example, to extract a file simply copy it
$ cp mnt/file1 ~/
# Unmount the archive when done
$ umount mnt
写入支持
与archivemount不同,后者通过重新创建存档来支持将数据写入存档,archivefs只支持从存档中读取。
硬链接支持
请注意,如果存档包含硬链接,archivefs将它们视为单独的文件。
依赖关系
~7–16MB
~185K SLoC