Google Drive的FUSE文件系统
google-drive-ocamlfuse是一个用OCaml编写的Google Drive FUSE文件系统。它可以让你在Linux上挂载Google Drive。
功能特性(参见新特性)
- 对普通文件和文件夹的完全读写访问
- 对Google文档、表格和幻灯片的只读访问(可导出为可配置的格式)
- 多账户支持
- 重复文件处理
- 访问回收站(
.Trash
目录) - Unix权限和所有权
- 符号链接
- 流媒体播放时的预读缓冲
- 访问与你共享的内容(需要配置)
- 团队云端硬盘支持
- 服务账户支持
- OAuth2设备支持
资源
授权
请务必查看授权页面,以了解授权过程的工作原理,并发现所有可用选项。
入门指南
安装
我已将Ubuntu的.deb包上传到我的PPA。要安装它,请使用以下命令:
sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse
新的测试版可在此PPA上获得。如果你想测试它们,请使用以下命令:
sudo add-apt-repository ppa:alessandro-strada/google-drive-ocamlfuse-beta
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse
有关其他安装选项,请参阅维基。
如何构建
要求
- OCaml >= 4.02.3
- Findlib >= 1.2.7
- ocamlfuse >= 2.7.1
- gapi-ocaml >= 0.3.6
- sqlite3-ocaml >= 1.6.1
配置和安装
要构建可执行文件,运行
dune build @install
要安装它,运行(如果你的用户没有足够的权限,请以root身份运行)
dune install
要卸载之前安装的任何内容,执行
dune uninstall
使用方法
首先,你必须设置OAuth 2.0:
- 激活
Google Drive API
。 - 创建一个OAuth客户端ID。
- 选择
Desktop
作为应用类型
。 - 将
名称
设置为你喜欢的任何内容。
这样你将获得一个可用于访问你的Drive的客户端ID
和客户端密钥
。要授权google-drive-ocamlfuse
,在命令行中传递客户端ID和客户端密钥,例如:
google-drive-ocamlfuse -id xxxxxxxxxx.apps.googleusercontent.com -secret XXX-YYY-ZZZ
此命令将创建默认应用程序目录(~/.gdfuse/default
),其中包含配置文件config
(有关配置的更多详细信息,请参阅维基页面)。它将启动Web浏览器以获得访问你的Google Drive的授权。这样,你可以在挂载文件系统之前修改默认配置。
然后,你可以选择一个本地目录来挂载你的Google Drive(例如:~/GoogleDrive
)。
如果挂载点不存在,请创建它:
mkdir ~/GoogleDrive
然后,你可以挂载文件系统:
google-drive-ocamlfuse ~/GoogleDrive
如果你有多个账户,可以运行:
google-drive-ocamlfuse -label [标签] ~/GoogleDrive
使用标签
来区分不同的账户。程序将使用目录~/.gdfuse/[标签]
来存放配置、应用程序状态和文件缓存。不同账户之间不共享任何文件,因此你可以为每个账户设置不同的配置。
要卸载文件系统,执行以下命令:
fusermount -u ~/GoogleDrive
故障排除
这个应用程序仍在测试中,因此可能还有待发现和修复的错误。为了extra安全,如果你愿意,你可以以只读模式挂载文件系统,通过修改配置(参见文档)来避免对服务器进行任何写入尝试。无论如何,rm
命令只会将你的文件移到回收站,所以你应该始终能够回滚任何更改。如果你遇到问题,可以打开调试日志:
google-drive-ocamlfuse -debug 挂载点
在~/.gdfuse/default
中,你可以找到curl.log
,它将跟踪对Google Drive API的每个请求,以及gdfuse.log
,它将记录FUSE操作和缓存管理。如果出现问题,你可以尝试使用以下命令清除缓存:
google-drive-ocamlfuse -cc
如果仍然有问题,请尝试删除~/.gdfuse/default
中的所有内容,从头开始。在这种情况下,你需要重新授权应用程序。
请注意,为了减少延迟,应用程序只会每60秒(可配置)查询服务器并检查更改。因此,如果你对文档进行了更改(服务器端),你不会立即在挂载的文件系统中看到它。
还要注意,Google文档将以只读方式导出。
支持
如果你有问题、建议或想要报告问题,你可以在github上开一个issue。