基于文件系统内容的安全性的制作方法

文档序号:20890556发布日期:2020-05-26 17:53阅读:279来源:国知局
基于文件系统内容的安全性的制作方法

本发明涉及文件系统,并且更具体地涉及利用文件来支持文件同步安全性。



背景技术:

文件同步可用于商业企业中以提供通过各种地理位置对文件的访问。文件同步可用于专用设置中以向最终用户提供对多个设备上或通过大量客户端的文件的存取。文件同步可用于医疗目的以提供关键患者信息的档案和备份。文件同步可用于灾难恢复情况,以在一个位置遭受龙卷风、地震、洪水或其它自然灾难的情况下跨位置维持数据。



技术实现要素:

根据本发明的各方面,提供了一种方法、系统和计算机程序产品。文件系统命令由第一处理器发送,并且用于由第二处理器同步。文件系统命令针对与第一文件系统的第一对象同步的第二文件系统的第二对象。表达由第一处理器发送到第二文件系统,并且用于由第二处理器进行认证。该表达是基于第一文件系统的第三对象而生成的,该第三对象与第二文件系统的第四对象同步。

同样根据本公开的实施例,各方面可包括分层文件系统。该分层文件系统包括第一存储器、第一存储设备和第一处理器。第一存储设备包含一个或多个第一文件系统对象的第一文件系统。第一处理器通信地耦合到第一存储器和第一存储设备。第一处理器接收第一文件系统命令。第一处理器检测第一文件系统命令是针对与第二文件系统的第二对象同步的第一文件系统的第一对象的。第一处理器基于该检测来取回一个或多个认证凭证。第一处理器标识第一文件系统访问命令是删除命令。第一处理器基于该标识来生成与第一文件系统有关的语言表达。第一文件系统向第二文件系统提供语言表达。第一文件系统向第二文件系统提供认证凭证。第一文件系统向第二文件系统提供第二删除命令。

上述发明内容并非旨在描述本公开的每个所示实施例或每种实现。

附图说明

本申请中包括的附图并入说明书中并形成说明书的一部分。它们示出了本公开的实施例,并且与说明书一起用于说明本公开的原理。附图仅说明某些实施例,而不限制本公开。

图1描绘了与实施例一致的利用文件同步的示例计算系统;

图2是与实施例一致的用于基于同步的内容同步文件系统的方法的流程图;

图3是与实施例一致的用于基于同步内容在同步的文件系统中执行删除的方法的流程图;

图4描绘了可以根据本公开的实施例使用的示例计算机系统的代表性主要组件;

图5描绘了根据本发明的实施例的云计算环境;以及

图6描绘了根据本发明的实施例的抽象模型层。

虽然本发明可修改成各种修改和替换形式,但是其细节已经在附图中通过示例的方式示出并且将被详细描述。然而,应当理解,其目的不是将本发明限制于所描述的特定实施例。相反,本发明覆盖落入本发明的范围内的所有修改、等效和替换。

具体实施方式

本公开的各方面涉及文件系统,更具体的方面涉及利用文件来支持文件同步安全性。虽然本公开不一定限于此类应用,但是通过使用此上下文的各种示例的讨论可以理解本公开的各个方面。

文件系统(也称为文件系统)是现代世界中计算的关键部分。文件系统是长期存储与计算机系统有关的信息和数据的系统。计算机系统上的文件对于在计算的所有方面中的使用都是关键的。在一些情况下,个人在文件系统上存储朋友和家人的照片。在其它情况下,多年的科学研究或有趣的进步和发现被存储在计算机系统的各种文件和文件夹中。在另一些其它情况下,诸如各种市场文档、书写文档或为补偿而被施加了工作的图像文档等现代工作的产品被存储在文件系统中。

随着因特网变得无所不在,文件系统已经发展到支持始终连接的生活方式。用户期望他们使用的设备和存储在其上的内容在许多地方都是可用的。计算机硬件和软件制造商已经创建了各种连接的服务以适应这些使用情况。在一些情况下,计算设备提供云托管的文件的无缝集成。云托管文件可以是允许直接查看和访问存储在远程服务器上的文件的门户或云接口的形式。云托管文件可以以分层配置的形式交互,其中一些文件被本地存储并且其中其他文件被远程存储(例如,云分层或云as分层)。分层为设备存储容量提供了增加的灵活性,因为网络可访问设备可以在本地仅存储数据子集,同时无缝地提供对远程存储的其他数据子集的查看和访问。

文件系统的另一个优点是以数据冗余(即,数据备份或文件系统备份)的形式。文件系统备份为计算机的用户提供了增强的数据丢失保护。在某些情况下,计算机的用户可利用备份来在计算机的破坏性组件故障出现时能够从先前状态恢复信息。基于云的文件系统可被利用来提供跨网络或因特网的远程文件系统备份。在一些情况下,计算机的用户可以通过利用基于云的文件系统的备份而被授权,并且可以将计算设备带到诸如在海上船舶上的危险环境,其中用户的数据可以被安全地备份的增加的保证。

基于云的文件系统和备份两者都利用文件同步。在文件同步中,数据完整性对于功能系统是最重要的。在某些情况下,由于管理多个文件系统,文件同步遭受许多技术问题。文件同步部分地通过事务来操作—通过接收对维护文件系统的副本的一个设备上的数据的更新。在一些情况下,更新可以从基于云的文件系统的用户引导。在一些情况下,更新可以从构成基于云的文件系统的一部分的设备之一被引导。文件同步系统试图确保事务保持数据完整性。在一些情况下,任何遇到的更新需要被核实它们是正确的更新。在一些情况下,问题可能源于恶意的第三方拦截交易。第三方可能试图欺骗命令,并且因此,可能需要验证每个文件同步命令。

基于内容的安全因子(csf)可以向文件同步系统提供技术改进。csf可以使得由文件同步系统同步的内容能够被用作主或辅助认证因子。csf可以利用基于由文件系统同步的内容而生成的表达。csf可以改进双向文件同步系统,例如基于云的文件系统。csf可以改进单向文件同步系统,例如文件备份。csf可以通过提供附加的安全因子来增强安全性,从而改进文件同步的操作。

csf的附加安全性允许现有文件同步系统的某些事务被自动化。例如,这些自动事务可以包括作为由文件系统之一发出的同步命令的结果,对第一文件系统的内容更新保持与第二文件系统同步。使用inotify机制(例如,轻量级事件)可以允许监视到文件同步系统中的一个文件系统的命令。inotify机制可以允许系统自动化删除命令生成和传输,以便在文件同步系统中将一个文件系统与其它文件系统同步。在某些情况下,因为删除命令可能具有不可逆的影响,所以某些文件系统管理员不愿意使发送到远程文件系统的删除命令事务自动化。由csf提供的增强的安全性可以使得能够在保持文件系统的安全性和完整性的同时自动化删除命令(或任何其他事务)。

csf可以利用同步的内容来操作。csf可以通过兼容性提供增强的性能。例如,不管格式或惯例如何,每个同步文件系统都具有同步的内容。在整个公开中,实施例可以利用各种术语来用于描述被同步的内容。说明性地,以下公开内容可以讨论在同步内容的讨论中可以互换使用的各种术语和名称。应当理解,这些术语是出于示例目的而利用的,并且本领域中的其他术语可以用于传达本公开的实施例。因特网服务提供商(isp)可以提供促进各种文件系统的同步的一个或多个计算服务(例如,处理器、存储器、api、联网等)。某些isp可以使用用于被同步的文件的各种术语,诸如对象或blob。可以对同步的文件夹使用各种术语(例如,目录、容器、桶等)。对于与文件系统的用户相关联的帐户,可以使用各种术语,诸如域或库。可以将各种术语用于同步的元数据,例如标签或xattr。"元数据"可以指多种类型的元数据(例如,用户元数据、系统元数据)中的任何一种。用户元数据可以是用户特别创建的元数据,诸如使用英语单词、短语和/或句子描述文件夹的描述元数据字段。系统元数据可以是系统创建的元数据,诸如创建日期、最后修改的时间戳等。

在第一示例中,本地计算机可以托管本地文件系统,该本地文件系统可以在一个或多个目录(也称为文件夹)中包含一个或多个文件。文件或文件夹的子集可以绑定到一个或多个帐户,并且元数据或xattr可以描述文件和/或文件夹的属性。本地计算机可以与位于远程位置的因特网服务提供商(isp)同步并与之合作。isp对于每个文件可以具有与该文件保持同步的对象。isp对于每个目录可以具有同步容器。isp可以利用标签来描述每个对象和容器的各种属性。isp可以维护对应于帐户的一系列金库。

图1描绘了与实施例一致的利用文件同步的示例计算系统100。计算系统100可以包括一个或多个客户端设备110-1、110-2、110-3和110-4(统称为110)。计算系统100还可以包括第一文件同步节点120(也称为本地节点)和第二文件同步节点130(也称为远程节点)。计算系统100还可以包括将客户端设备110-1和110-2通信地耦合到节点120的本地网络140。计算系统100还可以包括远程网络150和第二节点130。附加网络(未示出)可以通信地耦合本地网络140和远程网络150(例如,wan、因特网等)。

客户端设备110可以包括一个或多个计算机和个人数字助理(例如,智能电话、平板电脑、便携式计算机等)。每个客户端设备110可以包括处理器和存储器。图4可以描述与给定客户端设备110一致的示例计算机。每个客户端设备110可以通过向和从文件同步节点120和130发送指令来操作。每个客户端设备110还可以通过发送和接收来自文件同步节点120和130的内容来操作。例如,客户端设备110-2可以通过网络140向本地文件同步节点120发送命令。在第二示例中,客户端设备110-3可以通过网络150从远程文件同步节点150接收内容的更新。在一些实施例中,客户端设备可以利用附加网络来发出命令。例如,客户端设备110-2可以利用广域网(wan)向第二文件同步节点150发出命令。

第一文件同步节点120可以包括第一服务器122和第一数据存储库124。第一服务器122可以是被配置为维护第一文件系统的一个或多个计算设备和软件服务。第一服务器122可以基于来自客户端设备110-1和110-2的一个或多个请求来操作。第一服务器122可以通过网络140、网络150或因特网与客户端设备110通信。第一服务器122可以托管与附加文件系统(例如,第二文件同步节点130)同步的第一文件系统。

第一数据存储124可以是被配置成存储数据的一个或多个计算机和存储设备。例如,第一数据存储124可以是服务器外壳中的基于盘片或磁盘的硬盘驱动器,或位于服务器内的固态硬盘驱动器。第一数据存储124可包括被设计成存储和组织文件和文件夹的一个或多个文件系统(例如,ntfs、fat32、zfs等)。第一数据存储124可以包括存储值的一个或多个数据库。在一些实施例中,存储值可以与文件系统相关。第一数据存储124可以包括第一对象集126-1、126-2到126-n(统称为126)。第一对象集合126可以是文件系统的本地文件和文件夹。在一些实施例中,第一文件同步节点120的所有文件和文件夹可以由第二文件同步节点130存储。例如,第一文件同步节点120可以是主机服务器的文件系统,并且第一数据存储124中的数据的远程备份可以由第二文件同步节点130镜像。继续该示例,如果在第一数据存储124处存在数据丢失的情况下,第二文件同步节点130可以被用来重建用于主机服务器的数据。

在一些实施例中,第一文件同步节点124可以仅存储文件系统的文件和文件夹的子集。例如,在基于分层的云服务中,文件和文件夹的一部分可被保存在数据存储124中。本地存储在数据存储124中的文件的部分可由文件126-1-126-4,000表示。当数据存储124开始用完硬盘驱动器空间时,第一服务器122可以决定一个或多个文件需要被存储在远程同步节点130处。第一服务器122可以引导文件126-4,001-126-32,547由第二同步节点130存储。第一服务器122可以创建描述被同步到第二同步节点130的文件的一个或多个存根。第一服务器122可以将关于存储在第二同步节点130中的文件的信息直接存储在存根中(例如,可以加速在文件浏览器中查看文件和文件夹的元数据)。第一服务器122可以将关于存储在第二同步节点130中的文件的信息间接地存储在存根中—存根可以指向也存储在数据存储124中的数据库,并且关于存储在第二同步节点中的文件的信息可以通过存根中到数据库的链接来取回。

远程文件同步节点130可以包括第二服务器132和第二数据存储134。第二服务器132可以是被配置为维护第二文件系统的一个或多个计算设备和软件服务。第二服务器122可以基于来自客户端设备110的一个或多个请求来操作。第二服务器132可以通过网络150、网络140或因特网与客户端设备110通信。第一服务器132可以托管多个附加文件系统(例如,第一文件同步节点120)的同步的第二文件系统。第一服务器132可以在地理上与第一服务器122不同,并且由与第一文件同步节点120不同的实体操作。在一些实施例中,第二服务器132可以利用某些安全措施来保护第二数据存储134。例如,isp可以托管远程文件同步节点130,并且可以利用用户名和/或密码来认证对第一服务器132和远程文件同步节点的访问。

第二数据存储134可以是被配置成存储数据的一个或多个计算机和存储设备。例如,第二数据存储134可以是服务器外壳中的基于盘或磁盘的硬盘驱动器,或位于服务器内的固态驱动器。在一些实施例中,第二数据存储134可以包括多个数据存储硬件(例如,磁带、旋转盘片驱动器、固态驱动器、基于ram的盘、可堆叠交叉网格化非易失性存储器等)。第二数据存储134可包括被设计成存储和组织文件和文件夹的一个或多个文件系统(例如,ntfs、fat32、zfs等)。第二数据存储134可以包括或可以被配置成利用一个或多个数据库或文件系统,它们提供对诸如容量或访问等待时间之类的某些性能特性的强调。第二数据存储134可包括第二对象集136-1、136-2到136-n(统称为136)。在一些实施例中,第二数据存储134可以提供足够的存储以具有增加的冗余。例如,第二数据存储134可以具有多个硬盘驱动器,并且第二服务器132可以在多个硬盘驱动器的多个硬盘驱动器中制作第二对象集136的副本。

第二对象集136可以是直接副本,或者可以直接与第一对象集126相关。例如,第二数据存储134可以是数据存储124的备份,并且每个对象136可以直接对应于对象126。在一些实施例中,第二对象集136可以不是第一数据存储124的直接副本,并且第二数据存储134可以以不同格式存储数据。例如,第二数据存储134可以是一系列blob136,并且每个blob可以对应于第一数据存储124的文件或文件夹。在第二示例中,第二数据存储134可以具有一系列对象和容器136。在一些实施例中,数据存储134的一个或多个属性可以被混淆以便提供增强的安全性。例如,第二对象集合136可以以串行方式命名,而不管账户或所有者。继续该示例,数据对象136-107可具有序列化名称"43513209dfc2398",并且可与第一帐户相关。进一步继续该示例,第二数据对象136-108可具有序列化名称"43513209dfc2399",并且可与第二帐户相关。

计算系统100可以提供各种安全措施来保护数据对象126和136。客户端设备110可以利用本地文件同步节点120和远程文件同步节点130来访问数据对象126和136。在一些实施例中,计算系统100可以利用诸如用户名和密码之类的认证因子。例如,客户端设备110-3可以在本地包括多个文件和文件夹,并且还可以包括表示已经被分层到计算系统100的文件的多个文件存根。客户端设备110-3可以请求与示例存根相关联并且可以进一步与对象136-1相关联的文件夹。为了允许通过网络150以同步的方式访问实际文件夹,服务器132可以仅基于从客户端设备110-3接收到用户名和密码而以对象136-1进行响应。

在一些实施例中,计算系统100可以利用基于内容的安全因子(csf)来保护对数据对象126或136的访问。现在描述与csf的实施例一致的第一示例。客户端设备110-1可以连接到网络140以通过第一服务器122连接到第一数据存储124。用户可以使用由客户端设备110-1的操作系统执行的文件浏览器。文件浏览器可以通过客户机设备110-1和第一服务器122之间的一系列请求,安装寄存在第一数据存储124上的文件系统。当用户查看和更新来自客户端设备110-1的文件时,存储在第一数据存储124中的文件和文件夹可由第一服务器122更新。

继续第一示例,第一同步节点120可以执行与第二同步节点130的分层同步。第一同步节点120的第一服务器122可以确定一个或多个文件和文件夹126应当被分层到第二同步节点130。该确定可以基于文件126-8是存根。第一服务器122可以在170执行同步操作。确定和操作170可以作为守护进程或系统级框架(例如,inotify、轻量级事件策略等)而自动化。操作170可以是将对文件126-8的更新传输到第二服务器132。操作170可以包括将对文件126-8的更新变换成对象136-8。对象136-8可以是在不访问存储在数据存储124中的文件存根126-8和相关数据库的情况下不可读的格式。操作170还可以向第二服务器132发送csf。csf可以是描述同步属性的表达,该同步属性是在第一文件同步节点120和第二文件同步节点130之间同步的属性。同步属性可以包括以下中的任何一个:文件、文件夹、文件的元数据、文件夹的元数据、与文件相关的账户信息、与文件夹相关的账户信息等。同步属性还可以包括以下任何一个:文件或文件夹的大小、文件或文件夹的数量、文件或文件夹之间的关系(例如,文件夹"程序文件"中有十二个文件,文件x是文件夹y中第二大的文件,等等)。

继续第一示例,在操作170,第一服务器122选择数据存储124的关于文件夹126-137、023和文件126-138、110、126-138、111以及126-138、112(这三个文件位于文件夹126-137、023中)的属性。第一服务器122选择文件夹126-137、023和文件126-138、110、126-138、111和126-138、112,因为它们是存储在数据存储124中的存根,并且与相应的容器136-140、111和对象136-140、112、136-140、113和136-140、114同步。在操作170,第一服务器122可以生成以下表达:"文件126-138,111最后被修改得比文件126-138,110和126-138,112晚"。

继续第一示例,在操作170,第一服务器122可以将csf发送到第二文件同步节点130。在一些实施例中,操作170可以伴随有可选操作160。可选操作160可以是第二服务器132请求csf进行认证的提示。可选操作160可以是第二服务器132对同步的接收和执行的确认。可选操作160可以是经由在170处接收的csf对成功认证的确认。在一些实施例中,csf可以是二级认证因子,并且操作170的执行可以包括第一认证因子(例如,用户名和密码)以及csf(例如,文件系统的同步内容的表达)的传输。操作170的执行可以是文件系统api(例如,get()、put()、update()、delete())的形式。在一些实施例中,操作170的执行可以是服务器-客户端模型协议的形式,例如rest操作(例如,创建、更新、读取、删除)。

继续第一示例,在170处,在通过csf接收到所发送的同步更新和认证时,第二服务器132可以执行同步。详细地,第二服务器132可以将接收到的同步更新存储在要按照接收到的顺序处理的更新命令的缓存中。第二服务器132可通过将收到的csf的表达与容器136-140、111和对象136-140、112、136-140、113和136-140、114进行比较来认证该表达。如果对象136-140、113比对象136-140、112和136-140、114更晚地被最后修改,则在170接收的同步命令可被认证。如果在170处接收的同步命令被认证,那么可更新对象136-8。与其它安全方法相比,csf的使用可以提高文件同步的性能。例如,利用在第一数据存储124和第二数据存储134之间同步的内容,可以通过消除对附加的专用认证凭证的依赖性来减少存储器利用,该附加的专用认证凭证通常是存储密集型的。在另一示例中,利用在第一数据存储124和第二数据存储134之间同步的内容可以减少处理开销,因为不需要生成通常在数学上密集的附加专用认证凭证。

现在描述与csf的实施例一致的第二示例。可以基于来自第二文件同步节点130的更新来启动文件同步操作。在同步操作之前,删除命令可由客户端设备110-4发出,并被定向到第二数据存储134的对象136-137、189。对象136-137,189可以具有对象标识符“ad23420381djl17-38322a”。第二服务器132可以从数据库134生成csf表达。csf表达可以是由与拥有对象136-137、189的一方相同的一方拥有的内容。在一些实施例中,csf表达可以是由除了拥有对象136-137、189的一方之外的实体所拥有的内容。在接收到命令和csf时,第一服务器122可以更新对象126-137、189。对象126-137、189可以是属于第一用户的文件。

继续第二示例,从第二文件同步节点130发送到第一文件同步节点120的命令的格式可以如下:“curl–xdelete–h“content-length:256”–h“x-token:abc123pqrs”–h“x-obj-uuid:ad23420381djl17-38322a””。csf表达可以是“jk12425261dil17-2243k2是43,781,235字节?”并且可以是问题的形式。计算机系统100可以旋转表达以防止重复相同的表达。在一些实施方案中,计算机系统100可通过将csf表达置于最近使用列表中来防止csf表达的重复使用。文件同步节点120和130可以通过确保表达不在列表上来生成csf。在一些实施例中,可以周期性地剔除列表(例如,通过每三十天将最旧的条目移除到列表中,通过每天删除超过一周的所有条目等)。

在一些实施例中,与不使用csf的其他文件同步节点相比,计算机系统100可以提供增强的性能。第三方可以截取和查看在文件同步节点120和130之间发送的命令。例如,当删除命令通过因特网发送时,不良行为人可以监视从第二文件同步节点130发送到第一文件同步节点120的删除命令。不良行为人可以通过调整删除命令的x-obj-uuid来更改删除命令(例如,来自先前示例的“ad23420381djl17-38322a”可以被改变为“ad23420381djl17-38322b”,其可以与另一文件相关联)。然而,不良行为人不能说服文件同步节点120和130中的一个或另一个完成删除命令,因为它不能提供关于同步内容的表达。当正在被同步的文件系统内容不断改变时,计算机系统100可以提供优于固定密钥的增强的安全性。即使不良行为人可以获得一个csf表达,它也将是不相关的,因为内容已经改变或者因为csf表达未被重新使用。

图2是与实施例一致的用于基于同步的内容同步文件系统的方法200的流程图。方法200可由文件系统服务器或文件同步系统中的数据服务器执行。方法200可包括比本文所公开的更多或更少的操作。一些操作可以连续地或周期性地执行。例如,操作210可以说明性地每秒、每三秒或每十六毫秒执行。方法200的一些操作可以被组合或分离。由于某些文件同步系统可以包括多个服务器,方法200的一些操作可以由第一服务器执行,而其他操作可以由第二服务器执行。在一些实施例中,方法200可以由文件同步系统的多个服务器并行执行。

从开始205,在210处可以接收一个或多个文件同步请求。文件同步请求可以包括更新文件同步系统中的一个文件系统上的一个或多个值的命令。例如,通过网络共享连接的客户端设备可以更新一个或多个值。在一些实施例中,文件同步请求可以直接进行或者作为本地操作的一部分进行。例如,台式计算机的用户可以在通信地耦合到台式计算机并且物理地位于台式计算机内的硬盘驱动器上本地地更新一个或多个文件。更新的本地文件可以在作为文件同步系统的一部分的硬盘驱动器的文件系统中。在台式计算机上执行的守护程序或作业可以在更新本地数据之后在210生成文件同步请求。在一些实施例中,文件同步请求可以间接地或从远程节点发起的操作来做出。例如,在文件同步系统的远程节点上执行更新之后,可以接收在本地驱动器上执行同步的请求。

如果在215同步是本地启动的同步,则在220同步更新可被发送到文件同步系统中的其它节点。例如,第二文件同步服务器可以在220向第一文件同步服务器发送更新由第二文件同步服务器的用户更新的第一文本文件的命令。在220可发送多个同步更新。例如,给定的文件同步系统可以包括保持彼此同步的七个文件系统。继续该示例,第五文件同步服务器可以已经更新了第五文件系统对象。进一步继续该示例,在220处,六个文件系统同步更新可以被发送到文件同步服务器一、二、三、四、六和七。

在230,可以为基于内容的安全因子(csf)生成表达。在230处生成的表达可用于在220处发送的同步更新的认证。在230生成的表达可以描述同步文件系统中的一条或多条内容。例如,在包含实况服务器和备份服务器的文件服务器备份中,可以将实况服务器中的内容片段备份到备份服务器,并且可以利用任何内容片段在230处生成表达。在230处生成的表达可以基于文件系统的任何直接内容,诸如文件和文件夹。在230处生成的表达可以基于文件系统的任何间接内容—例如,包含在文件或文件夹的元数据中的内容,或者与文件或文件夹相关的账户信息。在230处生成的表达可以基于多个内容项,诸如一系列文件或文件夹或它们之间的关系。例如,对已同步文件系统中的三个文件的最近更新的元数据的描述。

在230处生成的表达可以基于预定模板。预定模板可以在所有文件同步节点之间同步。在一些实施例中,预定模板可由与本公开一致的基于csf的文件同步系统的用户生成。例如,一系列模板公开于表1中。

表1

根据表1,csf可取回的各种值可表示如下:<acct>用于帐户、域和金库;<meta>表示元数据、标签或xattr信息;<cont>对于文件夹、目录、容器或存储桶;<obj>用于对象、blob或文件。所使用的一些值可以用<val>表示。可以根据需要基于向下或向上舍入来产生这些值。方法200可利用该表示来选择适当的基于内容的信息以适当地生成csf。在一些实施例中,csf可以仅包括自然语言元素。例如,“<acct>jennifer</acct>”是对象‘summerjob.csv’的所有者。在一些实施例中,csf还可以包括标签。例如,“<acct>jennifer</acct>是对象<obj>summerjob.csv的所有者。”。

在一些实施例中,可以存在用于补充csf表达的附加认证密钥。例如,在文件同步节点之间可能还没有许多文件或文件夹同步。可能还不存在很多同步信息,因为备份仅开始执行。可能还不存在很多同步信息,因为第一文件系统可能相当空,并且文件到其它文件同步节点的分层可能不是很大。在文件同步系统的初始设置期间,可以预先生成附加的认证密钥,并在文件同步系统的节点之间共享。在230生成表达可以包括选择预先生成的密钥,而不是基于同步内容生成表达。当同步系统到达在节点之间同步的一定数量的内容项时,可以移除预生成的密钥以节省存储空间。在一些实施例中,在100个对象同步时,可以移除预生成的密钥。在一些实施例中,在同步12,000个对象时,可以移除预生成的密钥。

在一些实施例中,对用于230处的表达生成的内容的选择可以基于文件同步系统的一个或多个因子。例如,为了确保表达的内容相同,表达可以基于最近尚未同步的内容。继续该示例,如果在最近二十四小时内已经更新了同步内容的一个或多个项目,则可以不选择它。在230处生成表达之后,在240处,可以将表达发送到远程文件同步节点。在240,表达可以被发送到多个远程文件同步节点。在240处发送表达之后,方法200可以在295处结束。

如果在215处同步不是本地发起的同步(例如,远程发起同步),则可在250处评估接收到的基于csf的表达。在250,可基于在同步文件系统的节点之间共享的一个或多个模板来评估表达。在250,可基于自然语言处理引擎来评估表达。在其中仍使用预生成的密钥的实施例中,在250对表达的求值可以基于同步的预生成的密钥。在一些实施例中,在250,文件系统可以高速缓存同步内容的一个或多个项以确保表达求值的性能。在第一示例中,可基于先前的同步操作来更新第一对象,并且该对象在被更新之前的状态将被置于更新高速缓存中。更新高速缓存可将更新存储某一时间段。在一些实施例中,该时间段可以平衡仅有效事务的成功认证与改变的密钥集合(即,同步文件系统的同步内容)的现实。在第一示例中,在250,高速缓存可用于三十分钟之前的事务的有效表达求值。在第二示例中,高速缓存可用于250处对四十五秒大的事务的有效表达求值。

如果在255表达求值为有效表达,则可在260执行同步操作。在260执行同步操作可以包括将一个或多个值写入包含在接受方文件同步节点中的本地文件系统或数据库。例如使盘控制器翻转硬盘的一个或多个盘片上的磁比特。在255处确定表达是否评估为有效(或执行同步操作260)之后,方法200可在295处结束。

在第一示例中,在230处生成表达可包括从来自第一文件系统的一个或多个内容项中选择名为“henrypictures”的第一文件夹。第一文件夹可以包括一个或多个属性,包括第一属性。第一属性指示在第一文件夹内存在三十一个文件和文件夹。从内容表中选择指示文件夹中的内容项的数量的模板条目。在230处生成表达可以得到第一表达。第一表达状态“‘31’itemsarelocatedinfolder‘henrypictures’?”该表达可以是在第二文件系统检查和比较时解析为真的表达。

在第二示例中,在250评估表达可包括将第二文件系统的内容与接收到的表达(例如,在前述段落中的第一示例中生成的表达进行比较。表达状态“‘31’itemsarelocatedinfolder‘henrypictures’?”该表达可包括第一项‘31’和第二项‘henrypictures’andabody“__itemsarelocatedinfolder__?”。表达可在210已被接收作为文件同步请求的一部分。评估可包括从第二文件系统取回一个或多个内容项。表达使用自然语言处理被解析以将第一项和第二项变为可比较的元素。评估可包括从第二文件系统取回所有文件夹并且在每个文件夹之上迭代,知道找到与“henrypictures”的匹配。当在第二文件系统中找到匹配文件夹后,对匹配文件夹的属性和与匹配文件夹有关的元数据的属性的扫描可以将表达评估为真(即,在文件夹henrypictures中当前存在31个项)。

图3是与实施例一致的用于基于同步内容在同步的文件系统中执行删除的方法300的流程图。方法300可由文件系统服务器或文件同步系统中的数据服务器执行。方法300可包括比本文所公开的更多或更少的操作。一些操作可以连续地或周期性地执行。例如,操作310可以说明性地每秒、每三秒或每十六毫秒执行。方法300的一些操作可以被组合或分离。由于某些文件同步系统可以包括多个服务器,方法300的一些操作可以由第一服务器执行,而其他操作可以由第二服务器执行。在一些实施例中,方法300可以由文件同步系统的多个服务器并行执行。为了说明的目的,将在本地文件系统和远程文件系统之间描述方法300,并且两个文件系统被一起同步。

在310,可以接收一个或多个文件系统命令。在310,可以从计算机的用户(例如,在计算机的文件系统上的文件夹中创建新的镜像文件的用户)接收文件系统命令。可以在310基于自动守护程序或作业接收文件系统命令。在一些实施例中,可以基于索引框架接收文件系统命令。在一些实施例中,可以基于lwe框架接收文件系统命令。文件系统命令可以是api(例如,get()、put()、delete()、post())的形式。在一些实施例中,文件系统命令可以是rest协议的形式(例如,create()、update()、read()、delete())。文件系统命令可以针对与其它同步文件系统同步的本地文件系统上的第一内容项。

在320,可以确定文件系统命令的类型。在320处,可以基于用于传递命令的协议的类型来确定文件系统命令的类型。例如,通过将接收到的命令与curd模型进行比较来确定在320接收的命令是rest命令。如果在330处文件系统命令不是删除,则方法300可以在395处结束。如果在330确定文件系统命令是删除命令,则在340核实要删除的内容项是同步的。同步项是与一个或多个附加文件系统同步的文件系统中的一个或多个内容项(例如,备份到文件系统备份的文件、分层到分层文件系统的文件、基于云的文件存储服务中的云同步文件等)。在340,通过执行对由命令标识的项目的检查,可同步地核实项目。在第一示例中,项目可以是基于云的分层系统的远程项目(例如,对象、容器、元数据、域等)。继续第一示例,分层项目可以是通过访问与分层存储相关的本地存储可辨别的分层存储格式(例如,指向本地项目的串行化名称)。在第二示例中,项目可以是具有分层等效物的本地项目。继续第二示例,项可以是具有缩减的大小并且仅包含指向对应的分层项的指针的存根或短形式对象的格式。继续第二示例,存根可以是直接的(例如,指向对应的分层项目的指针)或间接的(例如,指向包含关于分层项目的信息的数据库)。存根可以包括附加信息,诸如存根的最后更新日期或在存根的指针中表示的对应同步内容。该命令可以针对存储在本地文件系统上的项。

如果在340项目被核实为同步,则在342可以将第一认证因子发送到辅助文件系统。第一认证因子可以是主认证因子。在一些实施例中,主认证因子可以是由同步文件系统中的一个或多个设备用来获得对该一个或多个设备的访问的因子。第一认证因子可以是单条信息,诸如密码或口令短语。第一认证因子可以是多条信息,诸如用户名和密码。第一认证因子可以与本地文件系统分开存储(例如,存储在rsa密钥卡上、存储在认证数据库中、存储在仅在安全网络上访问的密钥服务器中等)。在一些实施例中,可以在342通过第一传输信道(例如,第一网络、无线网络、lan、蓝牙个人区域网等)发送第一认证因子。在342,第一认证因子可被发送到操作远程文件系统的服务器。

在342发送第一认证因子之后,在344,可以发送基于内容的辅助认证因子(csf)。可以在344响应于来自在342接收第一认证因子的接收方同步服务器的请求来发送csf。在344处,可以通过第二传输信道(例如,第二网络、第二无线网络、单独的lan、不同的个人区域网等)来发送csf。

作为在344发送csf的一部分,可以基于本地文件系统中包含的同步内容来生成csf。在一些实施例中,可以将csf生成为与344处的csf发送不同的操作。文件系统的内容可以是任何属性、描述符、特性、值或与文件、文件夹、元数据或帐户相关或描述文件、文件夹、元数据或帐户的任何其它信息。用于生成csf的内容可以与删除命令所针对的帐户相关。在一些实施例中,用于生成csf的内容可以与另一账户(例如,也在本地文件系统和远程文件系统之间同步的第二用户的账户)相关。用于生成csf的内容可以与第一认证因子不同(例如,不是密码、不是用户名、不是所生成的rsa密钥等)。csf可以是诸如疑问语句或声明语句的表达(也称为语言表达)。在344,可以将所生成的csf发送到操作远程文件系统的服务器。

在342发送第一认证因子或在344发送第二认证因子(即,csf)之后,在346,删除命令可被发送到远程文件系统。删除命令可以在346作为342处的第一认证因子的一部分来发送。在一些实施例中,第一认证因子、第二认证因子和/或删除命令可以一起发送。例如,可同时在346发送删除命令和在344发送csf。在一些实施例中,第一认证因子、第二认证因子和/或删除命令可以在342、344和346处作为单个传输被发送。

在348,可接收确认(也称为确认)。可以响应于接收到在342处发送的第一认证因子已被接收的确认,在348处接收确认。响应于接收到在344处发送的csf已被接收的确认,可以在348处接收确认。响应于接收到在346发送的删除命令已被接收的确认,可以在348接收确认。确认可以由与远程文件系统有关的一个或多个服务器或计算机产生。可以通过第一传输信道、第二传输信道或附加传输信道来接收确认。在一些实施例中,在348处接收的确认可以指示在342处的第一认证因子或csf344不对在346处发送的删除命令进行认证。

在350,可以对本地文件系统执行删除命令。在342、344或346将各种组件发送到远程文件系统或确认348之后,可以在350执行删除命令。如果确定删除命令不是针对同步内容340,则可以在350执行删除命令。在350处的删除命令在本地文件系统上执行之后,方法300可在395处结束。

图4描绘了根据本公开的实施例的可以使用的示例计算机系统401的代表性主要组件。应当理解,各个组件可以在复杂性、数量、类型和/或配置上变化。所公开的特定示例仅用于示例目的,而不一定是仅有的这种变型。计算机系统401可以包括处理器410、存储器420、输入/输出接口(这里是i/o或i/o接口)430和主总线440。主总线440可以为计算机系统401的其他组件提供通信路径。在一些实施例中,主总线440可连接到其它组件,例如专用数字信号处理器(未描绘)。

计算机系统401的处理器410可以包括一个或多个核412a、412b、412c、412d(统称为412)。处理器410可以另外包括一个或多个存储器缓冲器或高速缓存(未示出),其为核412提供指令和数据的临时存储。核412可以对从高速缓存或从存储器420提供的输入执行指令,并将结果输出到高速缓存或存储器。核412可以包括被配置为执行与本公开的实施例一致的一个或多个方法的一个或多个电路。在一些实施例中,计算机系统401可以包含多个处理器410。在一些实施例中,计算机系统401可以是具有单核412的单个处理器410。

计算机系统401的存储器420可以包括存储器控制器422。在一些实施例中,存储器420可以包括随机存取半导体存储器、存储设备或用于存储数据和程序的存储介质(易失性或非易失性)。在一些实施例中,存储器可以是模块的形式(例如,双列直插式存储器模块)。存储器控制器422可以与处理器410通信,以便于存储器420中的信息的存储和取回。存储器控制器422可以与i/o接口430通信,从而促进存储器420中的输入或输出的存储和取回。

i/o接口430可以包括i/o总线450、终端接口452、存储接口454、i/o设备接口456和网络接口458。i/o接口430可以将主总线440连接到i/o总线450。i/o接口430可以将指令和数据从处理器410和存储器420引导到i/o总线450的各种接口。i/o接口430还可以将指令和数据从i/o总线450的各种接口引导到处理器410和存储器420。各种接口可以包括终端接口452、存储接口454、i/o设备接口456和网络接口458。在一些实施例中,各种接口可以包括上述接口的子集(例如,工业应用中的嵌入式计算机系统可以不包括终端接口452和存储接口454)。

贯穿计算机系统401的逻辑模块—包括但不限于存储器420、处理器410和i/o接口430—可以将对一个或多个组件的故障和改变传达给管理程序或操作系统(未描绘)。管理程序或操作系统可以分配计算机系统401中可用的各种资源,并且跟踪存储器420中的数据的位置以及分配给各个核412的进程的位置。在组合或重新布置元件的实施例中,可以组合或重新分布逻辑模块的方面和能力。这些变化对于本领域技术人员是显而易见的。

首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。

云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。

特征包括:

按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。

广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理pda)对云的使用。

资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。

迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。

可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。

服务模型如下:

软件即服务(saas):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。

平台即服务(paas):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。

基础架构即服务(iaas):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。

部署模型如下:

私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。

共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。

公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。

混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。

云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。

现在参考图5,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,这些本地计算设备例如个人数字助理(pda)或蜂窝电话54a、台式计算机54b、膝上型计算机54c和/或汽车计算机系统54n。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或他们的组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要针对它们维护本地计算设备上的资源。应当理解,图1中所示的计算设备54a-n的类型仅旨在说明,并且计算节点10和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算设备通信。

现在参考图6,示出了由云计算环境50(图1)提供的一组功能抽象层。应当预先理解,图1、2和3中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描述的,提供了下面的层和对应的功能。

硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于risc(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的示例包括:网络应用服务器软件67以及数据库软件68。

虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的示例:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。

在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个示例中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(sla)计划和履行功能85:为根据sla预测的对云计算资源未来需求提供预先安排和供应。

工作负载层90提供了可以利用云计算环境的功能的示例。可以从这一层提供的工作负载和功能的示例包括:地图绘制和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及安全和认证96。

在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,这些编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,这些模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

已经出于说明的目的呈现了对本公开的各种实施例的描述,但是其并非旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语来说明实施例的原理、实际应用或对市场上存在的技术的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1