14 个版本 (重大更改)

0.14.0 2023年11月5日
0.12.0 2022年12月13日
0.11.1 2022年8月25日
0.11.0 2022年3月6日
0.4.0 2020年6月19日

#33文件系统

Download history 9236/week @ 2024-03-14 10061/week @ 2024-03-21 9762/week @ 2024-03-28 12638/week @ 2024-04-04 14094/week @ 2024-04-11 13474/week @ 2024-04-18 12542/week @ 2024-04-25 10910/week @ 2024-05-02 10825/week @ 2024-05-09 10700/week @ 2024-05-16 10228/week @ 2024-05-23 10168/week @ 2024-05-30 9873/week @ 2024-06-06 8231/week @ 2024-06-13 12154/week @ 2024-06-20 10986/week @ 2024-06-27

42,824 每月下载次数
用于 50 Crates(其中 43 个直接使用)

MIT 许可证

340KB
8K SLoC

FUSE (用户空间文件系统) for Rust

CI Crates.io Documentation MIT License dependency status

关于

FUSE-Rust 是一个用于在用户空间中轻松实现 FUSE 文件系统 的 Rust 库。

FUSE-Rust 不仅提供绑定,它还对原始 FUSE C 库进行了重写,以充分利用 Rust 的架构。

这个库最初是从 fuse crate 分支出来的,目的是继续开发。特别是添加了 7.19 之后的 ABIs 功能。

文档

FUSE-Rust 参考文档

详细信息

一个有效的 FUSE 文件系统由三部分组成

  1. 作为文件系统注册并转发操作到处理这些操作的用户空间进程的通信通道的 内核驱动程序
  2. 帮助用户空间进程建立和运行与内核驱动程序的通信的 用户空间库(libfuse)。
  3. 实际上处理文件系统操作的 用户空间实现

内核驱动程序由 FUSE 项目提供,用户空间实现需要由开发者提供。FUSE-Rust 提供了这两者之间的替代品。这样,开发人员可以在 Rust 中构建 FUSE 文件系统时充分利用 Rust 的类型接口和运行时功能。

除了单个设置(挂载)函数调用和一个最终拆解(卸载)函数调用到 libfuse 之外,所有操作都在 Rust 中运行,在 Linux 上,这些对 libfuse 的调用是可选的。可以通过不使用 "libfuse" 功能标志来构建来移除这些调用。

依赖关系

必须安装 FUSE 才能构建或运行使用 FUSE-Rust 的程序(即内核驱动程序和库。某些平台可能还需要用户空间实用工具,如 fusermount)。通常 FUSE 的默认安装就足够了。

要构建 FUSE-Rust 或任何依赖它的程序,还需要安装 pkg-config

Linux

Linux的FUSE在大多数Linux发行版中都有提供,通常称为fusefuse3(此软件包兼容两者)。在基于Debian的系统上安装

sudo apt-get install fuse3 libfuse3-dev

在CentOS上安装

sudo yum install fuse

构建时需要FUSE库和头文件。该软件包通常称为libfuse-devfuse-devel。还需要pkg-config来定位库和头文件。

sudo apt-get install libfuse-dev pkg-config
sudo yum install fuse-devel pkgconfig

macOS(未经测试)

可以从macOS的FUSE主页下载安装包。这是需要始终安装的内核部分。

使用Homebrew安装

brew install macfuse

使用Nix安装

nix-env -iA nixos.osxfuse

以及pkg-config(构建所需)

nix-env -iA nixos.pkg-config

当使用nix时,需要指定环境变量PKG_CONFIG_PATH以指向osxfuse的安装位置

export PKG_CONFIG_PATH=${HOME}/.nix-profile/lib/pkgconfig

FreeBSD

安装软件包fusefs-libspkgconf

pkg install fusefs-libs pkgconf

用法

将此内容放入您的Cargo.toml

[dependencies]
fuser = "0.7"

要创建新的文件系统,实现fuser::Filesystem特质。有关详细信息,请参阅文档examples目录中的基本示例。

待办事项

libfuse 3.10.3之前的所有功能都已实现。请随时贡献。请参阅GitHub上的问题列表并搜索包含"TODO"或"FIXME"注释的源文件,以查看仍缺少的内容。

兼容性

在Linux上开发和测试。在Linux和FreeBSD(使用稳定的Rust)上测试,详情请参阅CI。LinuxFreeBSD

许可证

examples/目录中明确包含不同许可证的文件外,所有内容均受MIT许可证许可。

贡献

分支、修改、提交拉取请求。确保使其对目标受众有用,同时考虑项目的哲学和Rust编码标准。对于较大或重要的更改,您可能首先想要打开一个问题以进行讨论。如果您的更改与用户相关,请记住更新更改日志

依赖关系

~1.3–2.3MB
~39K SLoC