2

我正在为 Google Drive 实现 FUSE 驱动程序。目的是允许用户将她的 Google Drive/Docs 帐户挂载为虚拟文件系统。完整源代码位于https://github.com/jforberg/drivefs。我使用fusepy绑定将 FUSE 与 Python 集成,并使用 Google 的Document List API 来访问 Drive。

我的驱动程序已经完成到 readdir(2)、stat(2) 和 read(2) 按预期工作的程度。在文件系统中,每个文件读取都会转换为具有很大开销的 HTTPS 请求。我已经设法通过强制读取更大的缓冲区大小来限制开销。

现在到我的问题。Thunar 和 Nautilus 等文件浏览器通过读取每个文件的第一部分(前 4k 字节左右)来构建拇指并确定文件类型。但是在我的文件系统中,一次读取多个文件是一个痛苦的过程,与简单的ls相比(每个文件只 stat(2)s),在 thunar 中获取文件列表需要很长时间。

我需要一些方法来告诉文件浏览器我的文件系统不能很好地使用“迷你读取”,或者某种方法来识别这些迷你读取并为他们提供虚构的数据以让他们开心。任何帮助,将不胜感激!

编辑:问题不在于 HTTPS 开销,而在于我对 Google 的原生“doc”格式的处理。我添加了一行以使 read(2) 在有人尝试读取本机文档时返回一个空字符串,并且文件列表现在几乎是即时的。

这似乎是一个轻微的限制,因为即使是 Google 的官方客户端程序也无法编辑原生文档。

4

1 回答 1

2

这是pycloudfuse,它是一个类似的尝试,但用于云文件/openstack 对象存储,您可能会在其中找到有用的位。

在写这篇文章时,我不能说我注意到 Thunar 和 Nautilus 的目录列表有任何问题。

我认为您不能为文件管理器提供数据——这必然会导致问题。

我喜欢的选项是向文件资源管理器发出信号,不要做缩略图等,但我认为这也不可能。

我认为最好的选择是提醒你的用户这drivefs不是一个真正的文件系统,并列出它的限制,如果有的话pycloudfuse就会有很多!

于 2012-05-25T14:02:23.417 回答