在 Windows 上使用 ownCloud 访问云文件

ownCloud VFS 利用微软的云文件 API,使在线文件的打开、修改和保存变得无缝。
59 位读者喜欢这篇文章。
We don't make software for free, we make it for freedom

Opensource.com

如今,大多数计算机用户都依赖在线文件存储。 感谢云计算的兴起,远程存储文件并在需要时下载文件的想法近年来焕发了新的活力。 然而,该原理的技术根源绝非新鲜事物,其实现可以追溯到几十年前。 虽然用于访问在线存储数据的协议和预期功能已发生巨大变化,但自 FTP 和类似协议时代以来,基本思想并没有太大改变。

对于在线(或“云”)存储拥有如此多的拥趸,有一个简单的解释。 云存储通常位于高度冗余的基础设施上,这些基础设施通常分布在不同的物理站点。 普通人很难使用他们通常可用的工具来设置任何类似的东西。 云存储还允许用户轻松扩展其存储空间,而无需摆弄其设备硬件。 它还使人们只需几个简单的步骤即可与亲戚、朋友或同事共享文件。

智能手机是云存储优势的一个极佳例子; 包括 Dropbox、Google Drive 和 iCloud 在内的客户端都已深度集成到移动操作系统中,并且可以在应用程序中像本地存储一样使用。

传统的台式机和笔记本电脑不像智能手机那样很好地集成在线存储。 相反,从计算机访问 iCloud、ownCloud 或其他存储解决方案是一项繁琐的任务,原因有几个。

协议问题

许多原因都归结为协议。 访问在线存储的方法和协议经常发生变化,并且没有单一协议已确立为事实标准。 Dropbox、S3 和 iCloud 等在线存储服务使用专有协议(部分基于 WebDAV 等开放协议),这些协议不容易在桌面操作系统上实现。 因此,桌面用户在使用在线文件存储时经常面临繁琐的用户界面 (UI)、舒适度降低和糟糕的用户体验 (UX)。

深入了解问题并提出可能的解决方案是有帮助的。 首先,所有现代操作系统——特别是 Windows、macOS 和 Linux(及其众多衍生版本)——都假定它们完全负责用户的的文件。 这源于传统的假设,即用户的文件将托管在单个设备上。 如果用户的所有文件都存储在同一设备上,则很容易将它们放在树状结构中(就像桌面操作系统长期以来所做的那样)并向用户呈现独特的视图。

使用基于云的存储,事情就没那么容易了。 因为这些文件不是本地可用的,所以计算机的操作系统无法像显示本地文件那样管理或显示它们。 要编辑存储在云中的 Excel 表格,您必须从云中下载文件,将其存储在本地,对其进行修改,然后再次上传。 这不仅破坏了您的 UI 和 UX; 而且还会造成混乱。

一些在线存储提供商尝试使用在云和本地计算机之间同步内容的客户端来解决此问题。 这是一种糟糕的变通方法。 例如,您可能不希望存储在云中的数十 GB 数据也驻留在您的小型本地设备上。 为了缓解这一挑战,一些工具允许您选择要在客户端和在线服务之间同步的数据子集; 这在一定程度上转移了问题,但肯定没有解决问题。

WebDAV 如何在行业中失败

许多 IT 专业人士可能会猛烈地摇头,他们知道有一种协议可以用于这些类型的任务。 而且他们并非完全错误。 WebDAV 最早于 2007 年 6 月由 IETF 指定,用于扩展 HTTP 协议以支持 Web 分布式创作和版本控制(简称 WebDAV)。 WebDAV 的唯一目的是提供一个接口,允许以与访问和编辑本地文件相同的方式访问和编辑远程位置(例如在线云存储)中的文件。 从那时起,WebDAV 获得了发展势头:ownCloud 和 NextCloud 等私有云解决方案支持 WebDAV 并且可以通过它进行访问。

然而,将 WebDAV 称为彻底的成功是不现实的,因为服务器端和客户端都没有实现广泛使用。 服务器端的情况尤其糟糕:包括 Dropbox、Google Drive 和 Microsoft OneDrive 在内的许多在线存储服务都不支持 HTTP 的 WebDAV 扩展。 有些服务部署了代理服务。 例如,Dropbox 可以与 DAVbox 一起使用来实现 WebDAV 访问。 其他服务提供工具来缓解缺少工作 WebDAV 服务器的问题。 但总的来说,WebDAV 支持在整个行业中并不普及,而且这种情况可能在短期内不会改变。

操作系统对 WebDAV 的支持不佳

这直接引出了 WebDAV 灾难性历史的第二个方面:客户端。 目前,只有一个操作系统在其用户空间的整个相关工具中具有相对完整的客户端支持,那就是 Linux。 KDE、GNOME 和 Xfce 等标准桌面环境可以从桌面连接到 WebDAV 驱动器。 它们还将 WebDAV 驱动器集成为就像它们是普通的本地磁盘一样,有效地允许用户在远程站点和本地计算机之间来回移动数据。 最后但并非最不重要的一点是,它们可以按需从 WebDAV 设备下载文件,而不是在远程站点和本地驱动器之间持续同步文件。 在 Linux 中,使用 WebDAV 的体验大多是良好的——主要是因为 WebDAV 没有固有的缓存。

当查看 macOS 时,情况会发生一些变化。 Apple 在一段时间前为 macOS 配备了 WebDAV 客户端,并且它在很大程度上运行良好。 但是,对于经验不足的用户来说,设置起来很繁琐。 而且,当客户端和服务器之间的连接不稳定时,macOS 的 WebDAV 客户端往往会表现异常——就像德国使用 LTE 连接的用户一样。 在这种设置中,用户必须定期清理其 WebDAV 目录才能使用它们。

最广泛使用的操作系统 Windows 在 WebDAV 集成方面也提供了最戏剧性的失败。 即使要设置基于 WebDAV 的存储驱动器,您也必须编辑 Windows 注册表——这项任务很容易超出普通计算机用户的知识范围。 如果这还不够糟糕,即使在修改注册表后,Windows 的 WebDAV 协议客户端看起来更像是一个存根而不是一个可用的功能。 您很快就会遇到与 macOS WebDAV 实现类似的问题,并且使用该协议的体验将非常糟糕。

ownCloud 的 VFS 替代方案

ownCloud 是一种私有云解决方案,允许用户按照自己的条件存储、同步和共享数据,包括在 Raspberry Pi、私有云或混合设置中。 ownCloud 为世界上最常见的操作系统提供客户端。 但多年来,它依赖于变通方法,例如要求用户明确选择要同步的文件。

ownCloud 已经提出了一个解决该问题的方案——而且这是一个相当复杂的方案。 Windows 提供了一个连接到基于云的在线存储的接口,ownCloud 利用其 虚拟文件系统 (VFS) 来利用该接口。

VFS 的工作原理

ownCloud 的 Windows VFS 功能在很大程度上依赖于 Microsoft 的一项名为 云文件 API 的功能。 它于 2017 年在 Windows 10 版本 1809 中正式推出。 Microsoft 为 OneDrive 的文件同步设计了它,但其他服务可以免费使用该 API,该 API 现在是 Windows 10 核心的一部分。 云文件 API 有点像从云到本地计算机以及反之亦然的数据同步的分界线。 它分为两部分

  • API 在 API 级别提供函数,以执行诸如在用户提交更改后打开、保存和上传文件到远程主机等任务。 云文件 API 处理许多用户不可见的事情; 例如,使用该 API 的客户端会将所有远程文件显示为在本地视图中“存在”,而无需下载它们。 云文件 API 仅在用户明确请求从远程驱动器打开文件后才会下载文件。
  • Windows.Storage.Provider 命名空间允许用户空间中的应用程序配置客户端以通过云文件 API 访问远程服务。

用户所见

当您看到 ownCloud VFS 在运行时,云文件 API 处理 Windows 下远程存储中的文件的方式的革命性之处就变得清晰了。

首先,从 Windows 版 ownCloud 客户端内部设置与您的 ownCloud 驱动器的连接。 确保启用虚拟文件支持; 这使得 Windows 工具(如资源管理器)中立即可见并可选择您 ownCloud 驱动器中的目录。 您将无法将它们与本地存储设备上的文件区分开来,并且当您打开存储在 ownCloud 中的文件时,它会看起来像在本地存在一样。 对于未同步到本地主机的文件,云文件 API 会生成一个占位符,当您打开文件时,该占位符将被实际文件替换。 这允许无缝的用户体验,同时保持客户端和服务器互联网链路上的带宽。

在 Windows 中设置 VFS 驱动器不需要管理员权限,而为 WebDAV 连接编辑 Windows 注册表则需要管理员权限。 这意味着 ownCloud VFS 可能可以在商业笔记本电脑等设备上使用,在这些设备上,用户通常无法使用管理员帐户。 但是,如果实例不是由公司在其合规制度下运行的,则合规政策可能仍然禁止使用 ownCloud。

与 WebDAV 的主要区别

VFS 不仅在 Windows 10 操作系统上运行得更好,而且还提供了一些 WebDAV 等协议中不可用的功能。 其中之一是隐式缓存。 在正常操作期间,VFS 将在文件打开时同步文件,直到本地定义的缓存已满; 如果用户请求其他文件,VFS 将从缓存中删除最旧的文件。

此外,VFS 允许您指定“收藏夹”文件,无论您是否尝试访问它们,这些文件都将始终从远程驱动器自动同步。 这缩短了访问常用文件的初始时间,尤其是在文件很大的情况下。

存储感知很有意义

Windows 云文件 API 中的另一个有用功能是 Windows 1809 中添加的“存储感知”功能。 虽然主要针对 OneDrive 用户,但由于其云文件 API 支持,存储感知可以在后台与 ownCloud 在线存储驱动器一起使用。 存储感知定期扫描 Windows C: 驱动器中长时间未使用的文件。 它将这些文件同步到远程云存储并从本地设备中删除它们,从而为更频繁使用的数据释放空间。

用户可以确定存储感知的间隔以及 Windows 何时触发扫描。 后一个因素不再非常重要,因为与过去搜索旋转磁盘驱动器相比,搜索 SSD 或 NVMe 设备非常快。 存储感知的目的是增加系统上可用的磁盘空间,而 ownCloud 驱动器可以作为卸载未使用的文件的目标。

其他操作系统上的 VFS

通过创建基于云文件 API 的虚拟文件系统,ownCloud 改进了在 Microsoft Windows 10 中使用 ownCloud 在线存储作为 Web 驱动器的体验。 ownCloud 是极少数完全使用此 API 的免费、自由和开源软件项目之一——即使其他供应商对其的商业支持也相当薄弱。 Apple 的 Windows 版 iCloud 客户端使用云文件 API,但列表很短。

ownCloud 如何在其他操作系统上使用 VFS? 将 Windows 功能移植到其他操作系统并不容易,因为云文件 API 在非 Windows 机器上不存在。

ownCloud 仍然实现了类似的功能——有点像。 macOS 和 Linux ownCloud 客户端的行为就好像云文件 API 即使在非 Windows 系统上也可用一样。 某些 Windows 功能已在后台替换为相应系统的存根。 Windows 客户端与 Linux 或 macOS 中的视图之间存在一些明显的差异。 例如,Windows 显示正确的文件大小,即使对于本地由占位符表示的远程文件也是如此。 在 Linux 和 macOS 上,所有文件都以 1 字节的大小和 .owncloud 的本地扩展名显示。 这清楚地表明这些文件在本地不存在——至少在用户要求打开它们并且 ownCloud 启动下载之前是这样。

不过,macOS 和 Linux 上的 VFS 体验确实不如 Windows 10 上那么流畅。

总结

ownCloud 的 VFS 极大地改进了 ownCloud 云存储驱动器与 Windows 10 的集成。 与 WebDAV 及相关协议相比,云文件 API 是 Windows 中的原生 API,与操作系统无缝集成。 这消除了在 Windows 10 中启用 WebDAV 访问所需的难看的黑客行为,更不用说有效使用它所需的扭曲了。 较旧的 Windows 客户端不会从 API 中受益,其优势可能会在大量使用 ownCloud 的环境中产生更新旧 Windows 版本的动机。

macOS 和 Linux 用户从 ownCloud 的 VFS 支持中获益不多。 在 Linux 上,像 elokab-files-manager 这样的业余项目为 ownCloud VFS 提供了更好的支持。 但这肯定不是您希望作为日常驱动程序押注的东西。 macOS 上的情况甚至更糟:虽然 Apple 长期以来一直承诺为 macOS 添加类似的 API 功能,但只有 Big Sur 似乎具有所需的功能集。 截至撰写本文时,ownCloud 的开发人员尚未将 macOS 的 ownCloud 客户端适配到 Big Sur 中的新功能。 因此,Linux 和 macOS 用户可以在他们的平台上使用 VFS,但有一些小的限制。 然而,Windows 10 用户获得了最大的收益。

接下来阅读
标签
User profile image.
Martin 是一个多面手。 他在 2000 年代初期开始了他的开源职业生涯,当时他是 Debian GNU/Linux 的积极贡献者。 从那时起,他一直积极倡导开源原则,并在高可用性、云计算 (OpenStack & Ceph) 和流程自动化等领域担任过许多职位。

评论已关闭。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.