现在,大多数计算机用户都依赖在线文件存储。由于云计算的兴起,近年来,远程存储文件并在需要时下载文件的想法获得了大量的新鲜空气。然而,这一原则的技术根基并不新鲜,其实现可以追溯到几十年前。虽然访问在线存储数据所使用的协议和预期的功能已经发生了巨大的变化,但自FTP和类似协议的时代以来,基本的想法并没有改变多少。
对于在线(或 "云")存储拥有这么多粉丝的原因,有一个简单的解释。云存储通常驻扎在高度冗余的基础设施上,通常分布在物理站点上。普通人要想用一般可用的工具建立类似的东西是很困难的。云存储还允许用户轻松扩展他们的存储空间,而不需要摆弄他们的设备硬件。它还使人们能够通过简单的几个步骤与亲戚、朋友或同事分享文件。
智能手机是云存储优势的一个很好的例子;包括Dropbox、Google Drive和iCloud在内的客户端都被深度整合到移动操作系统中,可以像本地存储一样在应用程序中使用。
经典的台式电脑和笔记本电脑并不像智能手机那样很好地整合在线存储。相反,从电脑上访问iCloud、ownCloud或其他存储解决方案是一项繁琐的工作,原因有几个。
一个协议的问题
许多原因可归结为协议问题。访问在线存储的方法和协议经常发生变化,没有一个协议将自己确立为事实上的标准。诸如Dropbox、S3和iCloud等在线存储服务使用专有协议(部分基于WebDAV等开放协议),这些协议在桌面操作系统上不容易实现。因此,桌面用户在使用在线文件存储时,经常面临繁琐的用户界面(UI),舒适度降低,用户体验(UX)不佳。
深入了解一下问题并提出可能的解决方案是有帮助的。首先,所有的现代操作系统--特别是Windows、macOS和Linux(以及其众多的衍生产品)--都认为它们是专门负责用户的文件的。这来自于一个老式的假设,即用户的文件将被托管在一个单一的设备上。如果一个用户的所有文件都存储在同一个设备上,就很容易把它们放在一个树状结构中(正如桌面操作系统一直以来所做的那样),并向用户展示一个独特的视图。
有了基于云的存储,事情就不那么容易了。因为这些文件在本地无法使用,计算机的操作系统无法像显示本地文件那样管理或显示它们。要编辑存储在云端的Excel表格,你必须从云端下载文件,存储在本地,修改它,然后再次上传它。这不仅破坏了你的用户界面和用户体验,还造成了混乱。
一些在线存储供应商试图通过在云和本地机器之间同步内容的客户端来解决这个问题。这是一个丑陋的解决方法。例如,你可能不希望存储在云中的几十GB的数据也驻留在你的小型本地设备上。为了减轻这一挑战,一些工具允许你选择一个数据子集,在客户端和在线服务之间进行同步;这将问题转移到了一边,但肯定不能解决它。
WebDAV是如何在行业中失败的
许多IT专业人士可能正在猛烈地摇头,他们知道有一个协议可以用于这些类型的任务。而他们并没有完全错。WebDAV早在2007年6月就被IETF指定为网络分布式授权和版本管理(简称WebDAV)的HTTP协议的扩展。WebDAV的唯一目的是提供一个接口,使远程位置的文件,如在线云存储,能够像本地文件一样被访问和编辑。从那时起,WebDAV获得了很大的发展。私有云解决方案,如ownCloud和NextCloud支持并可以通过它来访问。
然而,称WebDAV取得了巨大的成功是不现实的,因为服务器和客户端都没有得到广泛的使用。服务器方面的情况尤其糟糕:许多在线存储服务,包括Dropbox、Google Drive和微软OneDrive,都不支持HTTP的WebDAV扩展。一些人把代理服务放在了那里。例如,Dropbox可以使用DAVbox来实现WebDAV访问。其他服务提供了一些工具来缓解缺乏有效的WebDAV服务器的问题。不过,一般来说,WebDAV的支持在整个行业中并不普遍,而且这可能不会很快改变。
操作系统对WebDAV的支持不足
这直接导致了WebDAV的灾难性历史的第二个方面:客户端。目前,只有一个操作系统在其用户区的相关工具中拥有某种程度上完整的客户端支持,那就是Linux。标准的桌面环境,如KDE、GNOME和Xfce可以从桌面连接到WebDAV驱动器。它们还将WebDAV驱动器整合为正常的本地磁盘,有效地允许用户在远程站点和本地机器之间来回移动数据。最后但并非最不重要的是,他们可以按需从WebDAV设备上下载文件,而不是在远程站点和本地驱动器之间持续保持文件同步。在Linux中,使用WebDAV的情况大多不错--主要是因为WebDAV没有固有的缓存功能。
如果看一下macOS,情况会有一些变化。苹果公司不久前为macOS配备了一个WebDAV客户端,而且大多运行良好。然而,对于经验不足的用户来说,它的设置是很繁琐的。而且,当客户端和服务器之间的连接很脆弱时,macOS的WebDAV客户端往往会表现失常--对于德国的LTE连接的用户来说就是如此。在这样的设置中,用户必须定期清理他们的WebDAV目录才能使用它们。
最普遍的操作系统,Windows,在WebDAV整合方面也提供了最戏剧性的失败。要设置一个基于WebDAV的存储驱动器,你必须编辑Windows注册表--这是一项很容易超出普通计算机用户知识范围的任务。如果这还不够糟糕,即使修改了注册表,WebDAV协议的Windows客户端看起来更像是一个存根而不是一个可用的功能。你很快就会遇到像macOS WebDAV实现中发现的那些问题,使用该协议的体验将是糟糕的。
ownCloud的VFS替代品
ownCloud是一个私有云解决方案,允许用户按照自己的条件存储、同步和分享数据,包括在树莓派、私有云或混合设置中。ownCloud为世界上最常见的操作系统提供一个客户端。但多年来,它一直依赖变通方法,比如要求用户明确选择要同步的文件。
ownCloud已经想出了解决这个问题的办法,而且是一个相当复杂的办法。Windows提供了一个连接到基于云的在线存储的接口,而ownCloud利用其虚拟文件系统(VFS)来实现这一接口。
VFS如何工作
ownCloud的VFS功能在很大程度上依赖于一个名为云文件API的微软功能。它在2017年的Windows 10,即1809版本中正式推出。微软将其设计为与OneDrive的文件同步,但其他服务可以自由使用该API,它现在是Windows 10核心的一部分。云文件API是一种将数据从云端同步到本地机器的分界线,反之亦然。它被分成两部分。
- 该API在API层面上提供了一些功能,以执行诸如打开、保存和在用户提交更改后将文件上传到远程主机的任务。云文件API处理很多用户看不见的事情;例如,使用API的客户端将在本地视图中显示所有远程文件为 "存在",而不下载它们。只有在用户明确要求从远程驱动器打开文件后,云文件API才会下载该文件。
- Windows.Storage.Provider命名空间允许用户区的应用程序配置一个客户端,以通过云文件API访问一个远程服务。
用户看到的是什么
当你看到ownCloud VFS的运行时,云文件API在Windows下处理远程存储中的文件的革命性方式就会变得很清楚。
首先,在Windows的ownCloud客户端中设置与你的ownCloud驱动器的连接。确保_虚拟文件支持_已被启用;这使得你的ownCloud驱动器中的目录在Windows工具(如资源管理器)中立即可见并可选择。你将无法将它们与本地存储设备上的文件区分开来,当你打开存储在ownCloud中的文件时,它看起来就像存在于本地一样。对于没有同步到本地主机的文件,云文件API会生成一个占位符,当你打开它时,会用实际的文件来代替。这允许一个无缝的用户体验,同时保留了客户端和服务器互联网链接的带宽。
在Windows中设置VFS驱动器不需要管理员权限,因为编辑Windows注册表的WebDAV连接需要管理员权限。这意味着ownCloud VFS可以在商务笔记本等设备上使用,在这些设备上,用户通常没有管理员账户。然而,如果该实例不是由公司在其合规制度下运行,合规政策可能仍然禁止使用ownCloud。
与WebDAV的主要区别
VFS不仅在Windows 10操作系统上工作得相当好,它还提供了WebDAV等协议中没有的一些功能。其中之一是隐式缓存。在正常操作中,VFS会在文件被打开时进行同步,直到本地定义的缓存满了为止;如果用户请求额外的文件,VFS会从缓存中删除最旧的文件。
此外,VFS允许你指定 "最喜欢的 "文件,无论你是否试图访问这些文件,这些文件都会从远程驱动器自动同步。这缩短了访问常用文件的初始时间,特别是在文件很大的情况下。
存储意识是有意义的
Windows云文件API的另一个有用的功能是Windows 1809中添加的 "存储意识 "功能。虽然主要是针对OneDrive用户,但由于其对云文件API的支持,Storage Sense可以在后台使用ownCloud在线存储驱动器。Storage Sense会定期扫描Windows C: 驱动器,寻找长期未使用的文件。它将这些文件同步到远程云存储,并从本地设备中删除,为更经常使用的数据腾出空间。
用户可以决定Storage Sense的时间间隔和Windows何时触发扫描。后一个因素已经不是很重要了,因为与过去搜索旋转磁盘驱动器相比,搜索SSD或NVMe设备的速度非常快。Storage Sense旨在增加系统的可用磁盘空间,而ownCloud驱动器可以成为卸载未使用文件的目标。
其他操作系统上的VFS
通过创建一个基于云文件API的虚拟文件系统,ownCloud改善了在微软Windows 10中使用ownCloud在线存储作为网络驱动器的体验。ownCloud是少数几个完全使用该API的自由、自由和开源软件项目之一--甚至其他供应商对它的商业支持也相当薄弱。苹果公司的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上的情况更糟糕:虽然苹果早就承诺为macOS增加类似的API功能,但似乎只有Big Sur拥有所需的功能集。截至本文撰写时,ownCloud的开发者还没有根据Big Sur的新功能对macOS的ownCloud客户端进行调整。因此,Linux和macOS用户可以在他们的平台上使用VFS,但有小的限制。然而,Windows 10用户可以获得最大的收益。