10 个版本
0.2.8 | 2024年6月4日 |
---|---|
0.2.7 | 2024年2月12日 |
0.2.6 | 2023年3月29日 |
0.2.4 | 2023年2月10日 |
0.1.0 | 2020年4月25日 |
#42 in 文件系统
537 每月下载
130KB
3K SLoC
onedrive-fuse
将 Microsoft OneDrive 存储作为 FUSE 文件系统挂载。
安装
注意:对于 Nix 用户,程序已经通过 Nix Flake 在 flake.nix
中打包。
-
使用您的包管理器安装这些依赖项
- pkg-config
- openssl
- fuse (libfuse)
-
从 crates.io 编译并安装程序
$ cargo install onedrive-fuse
准备
-
首次使用时,您应该注册自己的应用程序 (客户端) ID 以访问 API。请阅读
doc/register_app.md
了解详细步骤。 -
使用上一个步骤中应用程序的客户端 ID 登录您的 OneDrive 账户。默认情况下,我们仅请求只读访问。
$ onedrive-fuse login --client-id <paste-your-client-id-here>
如果您想请求读写访问,应运行以下命令:
$ onedrive-fuse login --read-write --client-id <paste-your-client-id-here>
这将弹出一个浏览器窗口,要求您登录 Microsoft 账户进行 OneDrive。登录成功后,网页将自动将结果令牌传递回 onedrive-fuse,并打印
FUSE 已初始化
,表示文件系统已准备好。现在您可以关闭网页,上面的命令也应该已成功退出。您的访问令牌将被保存到 XDG 配置目录 中,默认为
~/.config/onedrive-fuse/credential.json
。因此,您不需要每次都重新登录。但是,如果您离开太久,例如数月,可能需要重新登录。
用法
手动
-
创建一个空目录作为挂载点,例如
~/onedrive
,然后将您的 OneDrive 存储挂载到它上。默认情况下,挂载的存储为只读。$ mkdir -p ~/onedrive # The directory to be mounted should be empty. $ onedrive-fuse mount ~/onedrive
如果您想挂载为读写访问,您必须在之前的登录步骤中请求读写访问。然后使用以下命令挂载存储:
onedrive-fuse mount ~/onedrive -o permission.readonly=false
⚠️ 请谨慎使用读写权限!错误可能会损坏 OneDrive 中的文件!
-
启动后,等待几秒钟进行初始化,直到显示
FUSE 已初始化
,表示文件系统已准备好。您可以在挂载点下执行任何操作。程序默认在前台运行,应保持终端窗口开启。您可能需要其他机制(如以下所述的
systemd
)来使其在后台运行。 -
如果您已经完成操作,请运行此命令以优雅地卸载文件系统。您不应直接按
Ctrl-C
或杀死onedrive-fuse
实例,这通常会导致数据丢失。$ fusermount -u ~/onedrive
⚠️ 我们尚未实现关机前的自动等待上传。请在卸载文件系统之前等待上传会话完成。否则,您的挂起上传会话将被取消。
Systemd
此程序与systemd集成,并预期作为用户服务启动。有关示例设置,请参阅onedrive-fuse.service.example
。请注意,您仍然需要先手动登录。
FUSE功能实现
- FUSE系统调用
- 读取
- 访问
- 忘记
- getattr
- lookup
- open
- O_RDONLY
- opendir
- read
- readdir
- release
- releasedir
- statfs
- 写入
- create
- mkdir
- open
- O_WRONLY/O_RDWR
- O_TRUNC
- O_EXCL
- rename
- rmdir
- setattr
- size
- mtime
- unlink
- write
- 其他
- destroy
- flush
- fsync
- fsyncdir
- init
- 不支持的
- bmap
- getlk
- getxattr
- link
- listxattr
- mknod
- readlink
- removexattr
- setlk
- setxattr
- symlink
- 读取
- 缓存
- Statfs缓存
- Inode属性(stat)缓存
- 目录树缓存
- 同步远程更改与本地缓存
- 文件读取缓存
- 文件写入缓存/缓冲区
许可协议
GPL-3.0-only
依赖项
~14–27MB
~444K SLoC