用于网络文件系统的管理和同步应用程序 【技术领域】
本发明涉及用于管理网络文件的应用程序。具体地,本发明的实施例涉及为了同步而检测文件系统的改变。
背景技术
当多个文件系统包含完全相同的内容时,该文件系统被称为是“同步的”。为了使文件系统保持同步,同步应用程序需要检测文件系统之间的差别,然后执行操作消除该差别。通常,同步应用程序被用于使需要存取相同文件不同副本的不同计算机的文件系统同步。需要彼此同步的一套文件系统在本文中称为“同步集”。属于给定同步集的每个文件系统都称为“同步系统”。
使同步集同步的动作称为同步操作。在每个同步操作过程中,同步应用程序通常尝试检测在任何同步系统中从前一同步操作以后何时数据项已被删除或被添加。
通常,同步应用程序设法将那些被检测为从前一同步操作之后正在加入任一同步系统的数据项加入所有同步系统。同样,同步应用程序设法将那些从前一同步操作以来正在从任一同步系统删除的数据项从所有同步系统中删除。
通常,该同步应用程序将不区分添加项是(1)作为其它数据项副本的数据项,还是(2)原始产生的数据项。此外,当重命名的数据项已被改变时,看起来似乎删除了原数据项并添加了新数据项。因此,原数据项可能会在所有同步系统中被删除,且新改变的数据项将被添加到所有同步系统。另一方面,该同步应用程序可能会将改变的数据项和未改变的数据项一起放入同一文件中。
在当前的同步技术条件下,如果用户在数据项上执行多个操作,然后设法使该数据项与另一数据项同步,则应用程序会将该数据项检测为改变的数据项或新数据项。应用程序将无法检测对该数据项执行的具体操作。结果,该同步操作可能会为另一文件而删除一个文件,或将改变地数据文件与原文件一起添加到同一文件系统中。
同步操作通常消耗大量的资源。例如,当同步操作检测到新文件添加到一个同步系统时,需要将新文件的内容数据传递到所有其它的同步系统。如果该文件较大和/或同步系统的数量较大,则消耗很多资源。
关于当前同步技术的另一问题是,新文件或替换的文件不保留其在文件系统上传递或重新产生之前的元数据信息(metadatainformation)。因此,如果在时间T1时产生的文件被更改,则当该同步操作将改变的文件视为新文件且原文件视为删除的文件时,将丢失该文件在时间T1最初产生的事实。
【发明内容】
本发明的实施例提供了能检测在待同步的第一文件系统上执行的一个或多个操作的应用程序。该同步应用程序使用检测到的第一文件系统的操作更新第二文件系统。
本发明的一个实施例能够检测第一文件系统中的操作,包括复制数据项、移动数据项、创建新数据项、删除数据项、以及编辑数据项。本发明的一个实施例还能够检测在第一文件系统上执行的多个操作。所检测到的操作可在同步操作过程中在第二文件系统上重新产生。
用本发明的实施例描述的同步技术比现在使用的其它同步程序花费更少。而且,本发明的实施例提供了保存同步文件元数据信息的同步技术,而其它同步程序会发生这些元数据信息的情况。
【附图说明】
附图中的实例用于描述本发明,而非用来限制本发明,其中同样的标号代表同样的元件。
图1是根据本发明的一个实施例的系统架构的示意图。
图2是根据本发明的一个实施例描述终端上的同步的流程图。
图3是根据本发明的一个实施例描述由系统终端上的许多用户共享的文件的同步的流程图。
图4是根据本发明的一个实施例详述多个终端上的共享文件系统的同步的流程图。
图5是根据本发明的一个实施例详述检测文件系统上的工作版本上的多个操作和组合操作的流程图。
图6是用于在同步操作过程中识别移动的或删除的数据项的流程图。
图7是根据本发明的一个实施例在同步操作过程中识别编辑的数据项的流程图。
图8是根据本发明的一个实施例识别被编辑和/或移动的或删除的数据项的一个或多个操作的流程图。
图9是根据本发明的一个实施例识别作为新数据项产生的或从其它数据项复制的和可能被编辑的数据项的流程图。
图10示出与本发明的实施例一起使用的用户界面。
图11是与本发明的实施例一起使用的硬件的框图。
【具体实施方式】
以下将描述用于管理文件的方法和装置。出于说明目的,在以下描述中阐述了许多具体细节,从而提供对本发明的透彻理解。然而,显而易见地是,不需要这些具体细节也可以实现本发明。在其它情况下,为了避免不必要地使本发明变得不清楚,由框图示出已知结构和装置。
在所提供的优点中,本发明的实施例实现了一种同步操作,这种同步操作能够识别出对属于同步系统的文件数据项执行的具体动作。在该同步操作过程中,该具体操作在其它同步系统的相应文件数据项上重新执行。结果,在许多以某种方式仅改变或移动这样的文件数据项的情况下,可避免文件数据项的完全传递。结果是节约了通信资源。此外,其它同步系统的相应文件数据项可被更新,而不丢失那些数据项的元数据信息。
A.功能概述
在一个实施例中,一个或多个客户终端能够访问服务器上的文件系统。能够从该文件系统下载一个或多个文件,并在该客户终端上处理这些文件。具体地,用户可对下载的文件的内容执行某些动作,包括编辑文档、删除数据项、创建用于该文件的新文档、在该文件内移动数据项或复制数据项、或这些动作的组合。在一个实施例中,管理系统检测在下载的文件上执行的动作。该管理系统接着使下载的文件与该文件系统的相应部分同步。
如本文所述,该文件系统是为多个客户保存许多文件的全部管理系统的部分。客户可仅下载该文件系统的一部分。该文件系统的部分可包括如目录、子文件、应用程序、可执行程序、文档、和不同数据类型的专用资源等的数据项。
当该文件系统的部分被客户端下载时,所得到的本地文件称为工作版本。该工作版本为客户端从被选择下载的该文件系统的部分中复制数据项。当创建工作版本时,信息就被记录在关于工作版本的比较文件中。该比较文件还可包括关于下载的该文件系统的那部分的信息。该信息包括可随后用于识别文件数据项、以及在该工作版本产生后对其所作的修改的元数据信息。在该工作版本被修改后,该工作版本可与用于下载该工作版本的文件系统的部分同步。在比较文件中记录的信息用于检测对该工作版本所作变化。
如本文中所述,术语“数据项(item)”是指可在文件系统内维持和/或管理的数据结构。如所指出的,数据项包括:目录、文件、应用程序、可执行程序、文档、以及不同数据类型的专用资源。该数据项可包括特定数据类型的文档或资源。例如,第一数据项可是字处理文档,且第二数据项可是储存该文档以及其它资源的文件夹。
根据一个实施例,包含在该比较文件中的信息主要是元数据信息。该元数据信息可包括特定数据项的定位信息、创建时间、修改时间、数据项大小、以及文件名。
可用存储地址和计算机位置来识别位置(location)。位置信息是指可用于识别计算机上数据项的存储地址的数据。位置信息可包括文件名或资源名。位置信息还可包括用来定位存储器中的特定数据项的文件路径。
本发明的实施例包括管理文件的系统和方法。根据一个实施例,在第一同步操作后,信息从文件系统映射到比较文件。该信息包括关于第一同步操作后第一数据项的状态的信息。例如,比较文件中的信息可表示在第一同步操作后第一数据项位于第一位置中。除了将文件系统映射到比较文件外,还产生了该文件系统的工作版本。最初,该工作版本表示第一数据项位于第一位置。包含在该工作版本中的信息被修改以反映对第一同步操作后第一文件的状态所作的任何改变。在第二、随后的同步操作过程中,将文件系统的工作版本中指示的位置与比较文件中指示的位置进行比较,以确定在第一同步操作和第二同步操作之间的时间间隔中,该第一数据项是否已被移动。
在一个实施例中,文件系统中的第一数据项可被移动到可用新位置信息识别的新位置。因此,如果第一工作版本被移动,则该文件系统不必重新产生第一工作版本。相反,该文件系统可将相应于第一工作文件的第一数据项移动到文件系统中的相应位置。与以前的同步应用程序相比,本发明的这种实施例不会仅因为第一工作数据项在工作版本上移动,就要求第一工作数据项作为该文件系统的新的部分重新产生。由于不必传递第一工作数据项内容的数据,因此节约了通信资源。而且,也保存了该文件系统中第一数据项的元数据信息。
本发明的另一实施例将关于文件系统的信息映射到比较文件。工作版本由该文件系统的一部分组成。在同步操作过程中,该比较文件和该工作版本被用于确定数据项自从上次同步操作以来是否已被复制。
本发明的另一实施例提供了能操作网络管理应用程序的计算机系统。该计算机系统包括与第二计算机交换通信的网络接口。该通信将创建可在第二计算机上访问的文件系统部分的工作版本。该第一计算机包括储存该工作版本的存储器。第一计算机上的处理器记录工作版本中的至少一个工作数据项的创建时间,其中该第一工作数据项来源于该文件系统的第一数据项。该处理器随后使用该创建时间确定是否对该第一工作数据项执行操作。
其它优点在于,本发明的实施例可检测:在该工作版本产生后数据项是否移动到新位置;当数据项从另一文件产生时,其是否是从存在于该工作版本中的另一数据项复制的;或数据项是否是从其产生后添加到该工作版本的数据项复制的。根据本发明的实施例可检测的其它操作包括数据项是否被编辑或从该工作版本删除。本发明的实施例还可检测对该工作版本或为该工作版本中的数据项执行的多个操作。
结果是,用于产生该工作版本的文件系统的一部分可被更新以反映该工作版本中的随后变化。然而,随后被工作版本数据项更新的文件系统中的数据项不需要全部替换或由该工作版本数据项重新产生。相反,同步方法或应用程序可更新该文件系统以反映该工作版本中的相应数据项的变化,或将数据项添加到该工作版本的变化。另一优点是在该工作版本中被操作的文件系统数据项可维持追踪其起源的信息。结果,该文件系统可被更新以仅反映那些对该工作版本上执行的操作。
B.系统概述
图1示出根据本发明的一个实施例管理计算机之间共享文件的系统。该系统包括经由网络15连接到服务器20的第一终端10。多个其它终端25也可通过网络15连接到服务器20。第一终端10可作为与服务器20通信的客户端被操作。在实施例中,客户端应用程序可在第一终端10上运行,以管理与服务器20共享的文件数据项和资源。
用户可操作第一终端10以从服务器20访问含有一个或更多资源和其它数据项的文件系统40。当用户在该文件系统40的一部分的借用版本或工作版本上工作时,该文件系统40的原始版本可保留在服务器20上。如由图1描述的系统使用户能在本地对从远程服务器20上存取的数据项操作,从而更新远程服务器上的文件系统40,以反映在第一终端10上对那些数据项所作的变化。
在一个实施例中,终端10上的用户可对从服务器20存取的数据项进行操作。这些操作可包括:编辑内容、删除从该服务器取回的特定数据项、将数据项移到新位置、复制从服务器20取回的数据项、以及添加随后包含在服务器20上的新数据项。此外,本发明的实施例允许用户更新服务器20以反映在数据项上执行的操作的组合。本发明的实施例减少了将由用户执行的操作组合到等价组合操作的可能性。该等价组合操作可包括编辑和复制数据项、创建新数据项并接着编辑它们和/或复制它们、以及编辑现有数据项并接着编辑它们。
在一个实施例中,终端10使用网络接口12与服务器20交换通信。在一个实施方式中,网络接口12支持互联网协议(IP)通信,尤其是支持网络(如互联网)通信的传输控制协议(TCP/IP)。另一方面,本发明的实施例可通过如局域网(LAN)和其它类型的广域网(WAN)等网络在计算机之间进行信号通信。
该服务器20可被用于储存或管理文件系统40。在一个实施例中,文件系统40包括多个部分,其中每个部分与用户或帐户关联。文件系统40的第一部分46可以是储存在服务器20上的文件,可被第一终端10访问,或被第一终端10的用户访问。该第一部分46可包括多个数据项,例如特定数据类型的文件和资源。
第一部分46的第一数据项44在图1中示出。出于说明目的,第一数据项44假定为如文档等资源。另一方面,第一数据项44可能是含有其它数据项的文件。该第一数据项44包括元数据信息和内容或与元数据信息和内容关联。第一数据项44的元数据信息可识别服务器20上存储器(未示出)上的特定位置(L1)。第一数据项44的元数据信息还可包括用于定位服务器20上的第一位置(L1)的位置识别信息(LI1)。由于第一数据项44被假定为某种资源,所以第一数据项44包括与该元数据信息关联的内容。
在所示出的实施例中,第一终端10接收来自服务器20的第一通信32,通过网络接口12和网络15发信号。该第一通信32包括文件系统40的第一部分46。在一个实施方式中,操作第一终端10的用户有对第一部分46的访问权。该访问权使用户能下载或取回第一部分46的一些或所有内容,包括第一数据项44。该用户能在取回第一通信32后生成第一部分46的工作版本50。该工作版本50包括来自第一部分46中的数据项的内容。用于工作版本50的某些元数据信息可从服务器20传输,并包含在第一通信32中。当工作版本50产生时,也可在第一终端10上产生其它元数据信息。从文件系统传输的元数据信息可包括,例如,如定位特定数据项的文件路径和名称的位置信息。
用第一通信32发信号的数据可用于产生工作版本50,至少包括第一工作版本56。该第一工作版本56从文件系统40的第一数据项44产生。在一个实施例中,由于第一工作版本56的内容部分58是从第一数据项44的相应内容部分48复制的,所以该第一工作数据项56从第一数据项44产生。
可从文件系统40传送的元数据信息包括第一数据项46的第一位置信息(LI1)。该第一位置信息(LI1)可被用来为第一终端10的第一工作数据项56识别第二位置(L2)。例如,该第一位置信息(LI1)可包括文件路径和名称。该文件路径可在工作版本50上重新产生,以使第一工作数据项56能定位于第一定位(L2)处。该名称也可作为附加位置信息传输。在很多应用程序中,该名称是该文件路径包含的部分。
当工作版本50在第一计算机10上产生时,新的元数据信息被记录。该新的元数据信息可包括标记第一工作数据项56的某些事件的时间值。在一个实施例中,第一时间值62可对应于该第一工作数据项的创建时间。第二时间值64可对应于第一工作数据项56的修改时间。当工作版本50在第一计算机10上产生时或刚创建后,第一时间值62和第二时间值64就被初始化。例如,用户可下载作为第一工作数据项56的字处理文档。当该文档被下载时,第一时间值62(创建时间)和第二时间值64(修改时间)被第一终端10上的操作系统(或其它应用程序)记录。例如,第一终端10可运行在第一工作数据项56产生时自动记录创建时间值和修改时间值的WINDOWS类型的操作系统。该创建时间是分配给标记其在特定计算机系统上创建的时间的特定数据项的值。该创建时间被储存为静态值,可随后用于识别相应工作数据项,即使该工作数据项具有新地址或新名称。该修改时间是与该工作数据项关联的值,用来标记编辑或创建该数据项的最后时刻。该修改时间可因此在工作版本50从文件系统40下载后改变。
在一个实施例中,第一计算机10维持或访问比较文件70,以储存元数据信息。储存在比较文件70内的元数据信息可包括当第一工作数据项56在第一计算机10上产生时记录的新元数据信息,以及可从文件系统40的第一数据项44传送的某一元数据信息。
在所提供的实例中,比较文件70储存第一工作数据项56和第一数据项44的第一位置信息(LI1)、第一工作数据项56的第二位置(L2)、第一工作数据项56的第一时间值62(创建时间)、以及第一工作数据项56的第二时间值64(修改时间)。第一位置信息(LI1)从服务器20传输,而比较文件70中的其它元数据信息随工作版本50的产生而创建。在工作版本50中的数据项的初始时刻的元数据信息被产生并储存在比较文件70中。如下文中将更详细地描述的,该元数据信息用于识别在工作版本50生成后在第一工作数据项56上执行的特定操作。通过识别特定操作,可更有效地执行同步。
比较文件70可用于检测的操作包括:编辑数据项、移动数据项、生成新数据项、复制数据项、删除数据项、及其组合。比较文件70提供对用第一通信32发信号表示的每个数据项的元数据信息的访问。在工作版本50上执行操作之后,本发明的实施例提供了工作版本50的数据项中的元数据与比较文件70的比较。为了确定工作版本数据项和文件系统数据项之间的差别,元数据信息的比较用于检测在工作版本50上执行的操作。在进行比较中,工作版本50中的数据项可被检测为具有不同于由比较文件70记录的相应数据项的元数据的元数据信息。此外,工作版本50中的数据项可被检测为不具有由比较文件70识别的相应数据项。在进行比较时识别的差别被记录并用于使工作版本50与文件系统40上的第一部分46同步。
根据本发明的一个实施例,第一部分46是可被服务器20的其它终端25访问的共享文件。在第一部分46的部分发信号到第一终端10后,第一部分46可能被另一计算机改变。例如,另一终端25可对第一部分46中的数据项进行访问和操作,这样,第一部分46从其发信号给第一终端10的时间后被改变。为了将工作版本50中的变化与共享文件系统40进行比较,第二通信34从服务器20向第一终端10发信号。第二通信34包括将与第一终端10同步时存在于服务器20上的元数据信息。在一个实施例中,在从第一终端10作出同步请求时,第二通信34被发信号给第一终端10。
在一个实施例中,第一终端10执行同步操作。该同步操作可比较工作文件50的改变或添加的数据项与第一部分46的数据项之间的元数据信息。该改变或添加的工作版本是第一终端用户在工作版本50上执行一个或更多操作的结果。改变或添加的文件系统数据项是其他用户在其文件系统40的版本上执行一个或更多操作的结果。工作版本50和第一部分46的数据项之间的差别由第一终端10的用户识别和协调。该差别作为协调的元数据信息被记录。在一个实施例中,第三通信36用于将协调的元数据信息从第一终端10发信号通知给服务器20。该协调的元数据信息可通过发信号通知服务器20,以使服务器20执行更新文件系统40的一个或更多操作,从而反映由于在工作版本50上执行的操作引起的改变。而且,该协调过的信息(reconcile information)可被用户50显示,以便用户可选择将被用于更新文件系统40的变化的或改变的数据项。
在另一实施例中,第一部分46不与其他用户共享,而是仅由第一终端10的用户享用。因而,第二通信34是不必要的。相反,比较文件70被用于执行同步操作和识别协调的元数据信息。在同步操作在第一终端10上执行后,该协调过的元数据信息接着用信号通知服务器20。该协调过的元数据信息用信号通知服务器20,以使其随工作版本50的变化更新文件系统40。
C.同步操作
图2示出形成工作版本50以及随后使工作版本50(图1)与文件系统40的相应部分同步的方法。参考图1中的部分的目的在于将使用的示范性部分与该实施例联系起来。在如图2描述的实施例中,假定第一文件系统40不是与其他用户共用。
在步骤210,文件系统40部分的工作版本被下载到第一终端10上。例如,第一终端10可通过互联网与服务器20连接。第一终端10的用户可具有帐户,用于识别文件系统40的第一部分46。文件系统40的第一部分46可被用户选择,从而下载到第一终端10上。
在步骤220,当工作版本50形成时生成比较文件70。该比较文件记录工作版本50的初始元数据信息。一些元数据信息还可从文件系统40的第一部分46的数据项传输。在可影响工作版本50的任何操作之前,在t=0时执行步骤210和220。在某一时间t=i执行步骤230-250,从而用户可能已经执行了工作版本50上的操作。此时,用户正在作出请求,从而使工作版本50与文件系统40同步。
在步骤230,识别出修改过的工作版本50和创建比较文件70时的工作版本50之间的差别。该差别可称为δ数据项(delta item)。该δ数据项包括工作版本50中后来新建的、复制的、移动的、或修改的数据项。该δ数据项还可包括通过比较文件70识别的数据项,其在工作版本50中不具有对应物(correspondence orcounterpart)。例如,可通过编辑或移动对第一工作数据项56进行操作,其中该数据项是工作版本50中的δ数据项。另一方面,比较文件70可识别工作数据项56,但工作数据项56已经从工作版本50删除。在这种情况下,第一工作数据项56是比较文件70中的δ数据项。类似地,其它工作数据项可在比较文件70形成后复制到或添加到工作版本50,在这种情况下那些数据项被识别为工作版本50中的δ数据项。
在步骤240,识别工作版本50中的数据项和比较文件70的数据项之间的差别。如所讨论的,这些差别也称为δ数据项。
在步骤250,协调在工作版本50和由比较文件70识别的数据项之间的差别。为了协调,δ数据项可被选择,用来指示文件系统40被更新。例如,如果δ数据项是第一工作数据项56的编辑过的版本,则该选择指定文件系统40是否将包括第一数据项44的编辑过的版本或初始版本。如果δ数据项是添加到工作版本50的数据项(如新数据项或复制的数据项),则该选择确定文件系统40是否保存那些添加。如果该δ数据项是移动到新位置的第一工作数据项56,则该选择确定文件系统40是否将使用用于第一数据项44的新位置信息,或该文件系统是否保持老位置。如果δ第一工作数据项56从工作版本50删除,则该选择指定文件系统40是否将删除第一数据项44。用操作的组合可执行类似的方法,如在本申请中其它部分所详述的。
图3详述了根据本发明的实施例,当与其它计算机共用文件系统40时,使工作版本50与服务器20上的文件系统40同步的方法。在图3中,生成工作版本50,如根据图2的实施例描述的。在步骤310,从文件系统40下载该工作版本50。在步骤320,创建比较文件70以记录关于工作版本50和文件系统40的元数据信息。在步骤330,对工作版本50作出改变。在步骤340中,识别通过比较文件70识别的数据项与工作版本50之间的差别。这些数据项称为δ数据项,可包括通过一个或更多操作在某一刻已被移动、删除、编辑、添加的工作版本数据项。
在步骤350,第一终端10的用户发出与服务器20同步的请求。此时,通过一个或更多操作工作,版本50可能已从其原始状态改变。
在步骤360,在第一终端10上接收关于文件系统40的新信息。从工作版本50在第一终端10上产生之时起,该文件系统40可以被其它终端访问或改变。因此,关于文件系统40的新信息可识别由其它用户作出的对文件系统40的数据项的改变。在一个实施方式中,关于文件系统40的新信息是元数据形式,且为由第一终端10的用户下载的第一部分46的数据项所特有。该元数据信息可包括相应于下载的数据项的文件系统数据项的位置信息。此外,关于文件系统数据项的新元数据信息可包括时间值。例如,请求同步时文件系统的创建时间值和修改时间值可发信号通知第一终端10,以确定文件系统40的δ数据项。
在步骤370,检测出更新的文件系统40和生成工作版本时的文件系统之间的差别(即δ数据项)。这些δ数据项在步骤360收到的新元数据信息对照在步骤320中生成比较文件时由比较文件70识别的数据项识别。在此步骤识别的δ数据项可被比较文件70或收到的关于文件系统40的新元数据信息识别。被关于文件系统40的新元数据信息识别的δ数据项可相应于被其他用户移动或编辑的数据项。此外,文件系统40的δ数据项可包括被其他用户添加到第一部分46的数据项,作为新数据项或其它数据项的副本。通过比较文件70识别的δ数据项包括在第一计算机10上生成工作版本50后从文件系统40删除的数据项。
在步骤380,对在步骤340和步骤370识别的δ数据项进行选择。该选择可由用户作出。该选择可指定比较文件70、工作文件50、以及文件系统40的δ数据项。对于每个δ数据项,该选择可确定是否保存该δ数据项。
在步骤390,在步骤340和370识别的差别之间的冲突被检测到并解决。例如,工作版本50中的数据项可被编辑,以便当其与生成工作版本50时的相应文件系统数据项比较时,其可被识别为δ数据项。在比较文件70中识别的该文件系统数据项可随后被可以访问服务器20的另一计算机改变。因此,两个δ数据项可与由比较文件70识别的同一数据项关联。在实施例中,第一终端10的用户可选择这两个δ数据项中哪个应被用于包含在文件系统40中。
另一方面,通过选择每个δ数据项是否都将并入同步文件系统40中的冲突协议,做出δ数据项之间的冲突选择。
在步骤395,所选择的δ数据项被用于更新文件系统40。在步骤340和370识别的每个δ数据项可被省略或被包含在文件系统的更新中。该用户可在冲突的δ数据项之间进行选择。
图4示出根据本发明的另一实施例的操作服务器20的方法。在如参看图4描述的实施例中,假定有多个用户访问服务器20上的共享文件系统。出于描述目的,请参看图1。假定第一终端10做出同步请求。部分文件系统40与可访问服务器20的其他客户端25共享。
在步骤410,共享文件系统40的一部分用信号通知第一终端10和客户端25。可独立操作每个客户端以访问和取回部分共享文件系统。
在步骤420,从第一终端10接收同步请求。该同步请求可相应于想要对文件系统40作出变化的用户。用户可能还想接收由下载部分文件系统40的其他用户输入的任何变化。
在步骤430,关于文件系统40的更新信息可以用信号通知请求同步的客户端。文件系统40可从客户下载该文件系统之时起更新,加入从客户端25输入的变化。
在步骤440,作为在工作版本50上执行操作的结果,服务器20接收关于其对文件系统40作出改变的信息。该改变可以是编辑、添加(新数据项和副本)、删除、以及移动的结果。
在步骤450,使用从第一终端10(作出同步请求的客户端)用信号通知的变化更新文件系统40。该更新的变化可以是在文件系统40的终端工作版本上执行一个或更多版本后由特定用户决定的选择。
在步骤460,确定任何其它请求是已被作出还是将由访问文件系统40的其它终端作出。如果存在其它同步请求,则为作出该请求的下一个客户端重复步骤430-460。根据这样的实施方式,每个有权访问共享文件系统40的客户端都可对其作出其它变化。当作出该同步请求时,由其它用户作出的变化和替换会合并在文件系统40中。因此,文件系统40在客户端的其中之一进行同步操作后改变,这样,下一个客户端将与先前更新的文件系统40同步。
D.检测在工作文件上的操作
参看图1的示范性组件,本发明的实施例允许工作版本50的数据项和文件系统40的数据项之间的同步,即使在该数据项进行了多个不同类型的操作后。能在工作版本50上执行的操作具有主要操作或组合操作的特征。根据一个实施例,在一数据项上执行的多个操作可被检测为一套等价组合操作中的一个。
在一实施例中,主功能(function)是编辑、删除、复制、移动、和创建新数据项。编辑操作导致工作版本50中的数据项的内容改变。删除操作造成数据项从该工作版本50去除。复制操作将工作版本50中的数据项的内容作为新的或增加的数据项重新产生。移动操作造成位于工作版本50的一个位置中的数据项被给予以新位置。位置可由名称、存储器地址、和存储器单元定义。这样,该移动操作可被执行以将数据项移动到新文件夹位置、重命名数据项、或将数据项移动到新存储器单元。该产生新操作在工作版本50上执行,以为工作版本50产生附加的数据项。
组合操作是在工作版本50上执行的多个操作的组合,以产生和/或影响工作版本数据项。与本发明的实施例对比,以前的同步系统能检测一些主操作的性能,但是不能检测特定的主操作、或操作组合。本发明的实施例的优点在于允许所有主操作以及在工作版本50的各个数据项上执行的多个操作的组合进行检测和同步。
可以使用格式aOb描述用于描述文件管理操作的分析表示,其中大写字母代表该操作,在该操作之前的数据项代表用于该操作的资源,在该操作之后的数据项代表该操作的目的。为了概括主要操作:
Ex--编辑文件X
Dx--删除文件X
Nx--创建新数据项X
xMy--X移动到Y
xCy--X复制为Y
根据本发明的一实施例,可将组合运算减少和提取出有限数目的等价组合操作。在进行提取的过程中所使用原则的一些实例包括:(1)如果数据项被删除,在该数据项上执行的先前的操作可被忽略;(2)数据项的从最初资源到最终目的地的多个移动可被视为一个移动;以及(3)在操作组合上执行的任何移动操作可以以其它操作的任何次序被分析,从而假定移动是在另一操作提供真实并简化的结果后执行的。使用这些原则,可假定任一工作数据项都经历九种可能的操作或操作组合之一,其中操作组合是其它操作组合的等价物。可为文件系统40复制在工作版本50上执行的操作,作为五个主操作之一或四个等价组合操作之一。在一个实施例中,四个等价组合操作是:
ExMy--编辑X并将其移动到Y
(Nx)Cy--创建X并将其复制为Y
E((Nx)Cy)--创建X,将其复制为Y,并编辑Y
E(xCy)--将X复制为Y,并编辑Y
附加说明将首先在任何等价组合操作中执行。
图5示出根据本发明的一个实施例,在用户请求使工作版本50与文件系统40同步时,检测对工作版本50中的数据项执行的操作的方法。在所示出的实施例中,在同步时工作版本50中的每个数据项存在十个可能的结果(outcome):未改变的操作、五个主操作、以及四个等价的操作组合。
在步骤502,从文件系统40的一部分创建工作版本50。在步骤504,生成比较文件70,其包括关于工作版本50的信息。假定步骤502和步骤504都发生在为工作版本数据项执行任何操作之前(即t=0时)。随后,用户请求与文件系统的同步(即t=f时)。在t=0和t=f之间,用户可执行改变工作版本50的一个或更多操作。
一收到同步请求,就在步骤506确定由比较文件70识别和定位的数据项是否与工作版本50中的相应数据项的位置相同。最初,当形成比较文件70时,每个数据项的位置被记录。这样,步骤506确定在比较文件70中识别的数据项是否能仍使用最初为该数据项记录的位置信息被定位。
如果步骤506确定由比较文件70识别的数据项仍具有在工作版本50中的相同位置,则步骤508接着作出关于该数据项是否在记录在比较文件70中后被编辑的另一确定。如果步骤508确定该数据项未被编辑,则步骤510断定该特定数据项在工作版本50中未改变。如果步骤508确定该特定数据项被编辑,则步骤512将由比较文件70识别的数据项记录为被编辑。
如果步骤506确定由比较文件70识别的数据项未被为该数据项记录的信息定位,则步骤514确定该数据项被移动。如果确定该数据项未被移动,则步骤516将该数据项记录为被删除。如果确定该数据项被移动,则步骤518记录工作版本50中的数据项的新位置。接着在步骤520中确定该移动的数据项是否也被编辑。如果该确定是肯定的,则在步骤522中该数据项被标记为被移动和编辑。
步骤524确定是否有被比较文件70识别的任何更多的数据项等待检查。如果先前的数据项被确定为未改变,则步骤524紧跟步骤510。如果先前的数据项被记录为被编辑,则步骤524紧跟步骤512。如果先前的数据项被记录为被删除,则步骤524紧跟步骤516。如果先前的数据项被记录为被移动,则步骤524紧跟步骤520。如果先前的数据项被记录为被移动和编辑,则步骤524紧跟步骤522。如果步骤524确定数据项保持被比较文件70识别,且这些数据项未被检查,则步骤526将被比较文件70识别的下一数据项设置为待检查。对于该下一数据项,从步骤506开始重复该方法。
如果步骤524确定没有被比较文件70识别的数据项等待检查,则步骤528确定是否有留在工作版本50中的任何数据项未检查。作为在步骤506-524中检查的比较文件数据项的结果,该未检查的数据项是未被检查的工作版本数据项。如果在工作版本50中不存在未检查的数据项,则该方法完成。否则,在步骤530,工作版本50中剩余的数据项被标记为被检查。
步骤532确定工作版本50中的未检查的数据项是否是副本。如果该确定是肯定的,则步骤534将该数据项记录为副本。步骤536确定该复制的数据项是否是从在工作版本50中作为新数据项创建的另一数据项复制的。
如果步骤536中的确定是否定的,则步骤538确定该复制的数据项是否也是在步骤538中生成后被编辑的。如果步骤538中的确定是肯定的,则步骤540将该数据项记录为被复制和被编辑。
如果步骤536中的确定是肯定的,则在步骤542中该数据项被标记为新的和复制的。换句话说,由文件系统40创建工作版本50后,该数据项被记录为由作为原始创建的另一数据项复制的。在步骤544,确定该新的和复制的数据项是否也被编辑。如果步骤544中的确定是肯定的,则该数据项被标记为新的、复制的、和编辑的。
如果在步骤532确定该数据项不是副本,则在步骤548该数据项被记录为新的。
步骤554确定标记为未检查的所有数据项是否留在工作版本50中。步骤544紧跟这些步骤中的一个:如果步骤538中的确定是否定的,从而该数据项仅被记录为被复制;步骤540是如果该数据项被确定为复制的和编辑的;步骤548是如果该数据项仅被确定为新的;如果步骤544中的确定是否定的,从而该数据项被确定为新的和复制的;步骤546是如果该数据项被确定为新的、编辑的、和复制的。如果步骤554确定数据项保持在工作版本50中未检查,则步骤556进行到下一个未检查数据项。接着从步骤532开始为下一数据项重复该方法。如果步骤554确定未检查的数据项不是留在工作版本50中,则该方法完成。
如图5的实施例所示,同步操作可为正在被同步的每个数据项检测出十个可能的结果。每个数据项可被确定为自从被下载起就未改变(步骤510)。否则,正在被同步的每个数据项可被确定为在创建工作版本50后由用户执行的一个或更多操作的结果。检测到五个主操作:编辑(步骤512)、移动(步骤518)、删除(步骤516)、创建新数据项(步骤548)、以及创建副本(步骤534)。此外,检测到四个组合操作:移动和编辑(步骤522)、新建和复制(步骤542)、新建、编辑和复制(步骤546)、以及复制和编辑(步骤540)。
在一个实施例中,可能出现删除工作版本数据项,然后用相同名称和位置信息重新产生的特例。如果步骤506合并该特例的检查,则这样的数据项可被识别为新数据项而不是被移动的数据项。具体地,如重新产生的数据项的创建时间值等的识别可被用于检查在步骤506中没有删除和重新产生该数据项。
图6至图9示出根据本发明的实施例提供检测图5中执行的操作的附加细节的流程图。图6是确定数据项是否被移动或删除的方法。根据本发明的实施例,图6可相应于图5的步骤514-518。
在步骤610,当在第一终端10上生成工作版本50时,为工作版本50中的每个数据项记录第一时间值。在一实施例中,第一时间值可相应于数据项创建时间。该创建时间是附属于某些操作系统如WINDOWS下的数据项的特性。当第一终端10上创建的数据项从另一计算机下载时,该创建时间可该数据项记录一个时间值。这样,当工作版本50的数据项从文件系统40下载时,第一终端10可记录该数据项的创建时间。该创建时间可能是千分之一秒,或几个数量级大。
在步骤620,当生成工作版本50时为每个数据项产生位置信息。该位置信息可相应于可被用于定位文件系统40上的数据项或工作版本50上的数据项。步骤610和620都在t=0发生,相应于生成工作版本50的时刻,在任何操作被执行之前。第一时间值和初始位置信息可定位在比较文件70中。
在步骤620之后,流程图进行到作出同步请求的时刻,即t=f。步骤630确定最初(时刻t=0时)记录的位置信息是否定位t=f时工作版本50中的数据项。如果步骤630中的确定是肯定的,则步骤640将该数据项记录为被移动。如果该确定是否定的,则接下来是步骤650。步骤650确定t=f时工作版本50中的任一数据项是否具有匹配为步骤610中的未定位的数据项记录的时间值。在一个实施例中,可检查工作版本50中的其它数据项以获得匹配未定位的数据项的创建时间的创建时间。
假定可执行该创建时间超过千分之一秒或百万分之一秒,可假定工作版本50中具有与丢失的数据项相同的创建时间的另一数据项是新位置中的未定位的数据项。如果步骤650中的确定是肯定的,则具有相同时间值的数据项在步骤660中被记录为被移动。如果步骤650确定工作版本50中的数据项都不具有丢失的数据项的创建时间,则步骤670将该数据项记录为被删除。
图7是根据本发明的实施例确定工作版本50中的任一数据项是否已经受编辑操作的流程图。图7所示的方法可相应于图5的步骤508、510、和512。在步骤710,在工作版本50中识别第一时间值。该时间值可相应于该数据项的创建时间。在步骤720,为同一数据项识别第二时间值,相应于该数据项的修改时间。如所提及的,创建时间和修改时间都是被如WINDOWS等的操作系统自动记录的时间值。这些时间值可是千分之一秒或甚至达到更大的精度级。这样,对于如图7所示的实施例,都假定创建时间和修改时间是为该数据项所独有的。
在步骤730,确定该修改时间是否不同于该创建时间。当数据项作为原本、副本、或下载被创建时,实施例提供了该创建时间和修改时间是相同的。这样,如果该创建时间和修改时间是不同,则步骤740将该数据项记录为被编辑。否则,步骤750将该数据项记录为未被编辑。
该创建时间和修改时间最初可能不是精确相同,但都在彼此的范围内。在一个实施例中,可检查以确定该修改时间是否在该创建时间的范围之外。
图8是根据本发明的实施例识别编辑和移动的复合操作的方法。在一个实施方式中,图8所示的方法可被用作图5的步骤514、518、520、以及522的子步骤。
在步骤810,当该工作版本从文件系统40下载时为工作版本50中的每个数据项记录多个时间值。如在其它实施例中指出的,该记录时间值的第一个相应于创建时间。该创建时间可使用工作版本50的计算机的操作系统自动创建。该创建时间和修改时间可分别记录在比较文件70中,并与相应数据项关联。
在步骤820,当生成工作版本50时为每个数据项记录位置信息。该位置信息可包括能定位工作版本50中的数据项的文件路径的片段。该位置信息还可包括该数据项的名称。工作版本中的每个数据项的初始位置信息可被记录在比较文件70中。
在步骤830,确定最初记录的位置信息可随后定位相应的数据项工作版本50。如果该位置信息确实定位相应的数据项,则该数据项在步骤840中被记录为未移动。如果最初记录的位置信息没有定位相应的数据项,则在步骤850作出另一确定。步骤850确定工作版本50中的另一数据项是否具有与未定位的数据项相同的创建时间。如果该确定是肯定的,则步骤860将该未定位的数据项记录为被删除。
否则,步骤870确定该修改时间是否匹配该数据项的创建时间。如果步骤870中的确定是肯定的,则该数据项在步骤880中仅被记录为被移动。如果步骤870中的确定是否定的,则该数据项在步骤890中被记录为被移动和编辑。
图9示出根据本发明的实施例,检测工作版本50中的未检查的数据项上的一个或更多操作的过程。参看图9所示的过程,在未检查的数据项上执行的操作可包括来自包含创建新数据项、复制、和编辑的组的至少两个操作。在一实施例中,如图9所示的过程可形成图5中的步骤532-546的子步骤。
当请求同步时,在工作版本50中的各个未检查的数据项上执行步骤910-980。步骤910-980假定某些其它步骤已经被执行以检测可能已经在工作版本50上执行的其它操作。具体地,步骤910-980在工作版本50中的未检查的数据项上执行。如图5所示,未检查的数据项是在由比较文件70识别的数据项与工作版本50的数据项比较后留下的数据项。该未检查的数据项可因而被假定为在生成工作版本50后已经创建。因此,未检查的数据项是副本和/或新数据项。该未检查的数据项也可能在被创建后已被编辑。
在步骤910,为该工作版本中的每个未检查的数据项记录时间值。对于在工作版本50被下载后创建的数据项,该创建时间可相应于用户创建该数据项并将其与工作版本50中下载的数据项一起储存的时间。该创建时间应为每个未检查的数据项提供唯一标识符。此外,工作版本50中的每个数据项的修改时间被记录。每当相应的数据项被编辑时该修改时间改变。然而,如果该数据项未被编辑,则该修改时间应与同一数据项的创建时间相同或非常接近。在一实施例中,可假定工作版本50中的每个数据项的创建时间匹配为比较文件70中的该数据项储存的创建时间。
步骤920确定每个未检查的数据项是否匹配储存在比较文件70中的数据项的其中之一的修改时间。在一个实施例中,副本的修改时间与其原版的修改时间相同。这种特性可通过运行在第一终端10上的应用程序实现。在一实施例中,第一终端10运行包含这种属性或特性的操作系统。这样的操作系统的一个实例是WINDOWS类型的操作系统。
如果该确定是肯定的,则步骤930提供了该数据项作为最初从文件系统40下载的另一数据项的副本被创建。由于编辑操作改变了修改时间,可假定该数据项随后没有被编辑。如果该确定是否定的,则接着是步骤940。
步骤940确定未检查的数据项的修改时间是否在创建时间之前。如果该修改时间在创建时间之后,则步骤950将该数据项记录为另一数据项的副本。这是因为另一数据项的副本保留(keep)了原版的修改时间,但当创建时被分配一新的创建时间。步骤940不能用于检测作为副本创建的数据项随后是否被编辑,因为那将修改时间改变为在创建时间之后。
如果修改时间在创建时间之后,步骤960确定该修改时间是否匹配创建时间。当数据项作为新数据项或另一数据项的副本创建时,修改时间和创建时间可以完全相同,或稍微有点不同,这取决于操作系统的构造或影响工作版本50的另一应用程序。如果步骤960中的确定是肯定的,则步骤970提供了作为创建新数据项的操作的结果而创建该数据项。
如果步骤960中的确定是否定的,则在步骤980,确定该数据项被编辑、新建、和可能是副本。这样,步骤980提供了两种可能性。此时,修改时间和创建时间不能被用于区分这两种可能性。为了分辨这两种可能性,实施例提供了在步骤980中识别的所有数据项也经受内容匹配的一个或更多步骤。一种算法可被用于将步骤980中的所有文件的内容与在工作版本50中识别为新的其它文件的内容进行比较,以确定文件是否是新的和被编辑的、或新的、被复制的和被编辑的。前提应是后者具有与识别为新数据项的另一数据项相似的内容。
E.用户界面
图10示出与本发明的实施例一起使用的用户界面1000。用户界面1000使用户能在不同计算机上改变的相同数据项之间进行选择。例如,参看图1,第一终端10上的用户可执行从文件系统40下载的工作版本数据项上的操作。该文件系统40可被共享,从而其他用户可通过网络访问该文件系统40。其他用户可操作文件系统40中的数据项,同时第一终端10上的用户可操作相应的工作版本数据项。当作出同步请求时,呈现出冲突。相应于工作版本的改变的数据项的文件系统数据项已被已访问文件系统40的另一用户改变。
本发明的实施例使用户能作出同步请求,以在文件系统40中的数据项和相应的工作版本50中的数据项之间进行选择。实施例还允许作出请求的用户选择如何解决被其它计算机更新的文件系统数据项和被作出同步请求的计算机上的工作版本更新的文件系统数据项之间的冲突。
用户界面1000包括第一栏1110和第二栏1120。第一栏提供关于第一计算机10上的δ数据项的信息。第二栏1120提供关于文件系统40的δ数据项的信息。文件系统40的δ数据项可通过将更新的文件系统与比较文件70进行比较来识别。第一栏1110的第一部分1125识别工作版本50的δ数据项。第二栏1120的第一部分识别文件系统40的δ数据项,如被其他用户更新。第一栏1110的第二部分(segment)1118识别在工作版本50的δ数据项上执行的操作或等价的组合操作。同样,第二栏1120的第二部分1128识别在更新过的文件系统的δ数据项上执行的操作或等价的组合操作。假定在第二部分1128中列出的操作已被访问共享的文件系统40的其他人执行。
对于在第一栏1110和第二栏1120中列出的每个δ数据项,用户可选择保持该变化或当该数据项在文件系统40上时保持该数据项。如果在第一栏1110中列出的δ数据项与第二栏1120中的δ数据项冲突,则用户可决定如何解决该冲突。例如,文件系统40中的数据项可下载到工作版本50上,随后在工作版本50上被操作。下载的相同数据项可被另一计算机访问和以不同的方式被操作。当作出同步请求时,作出该请求的计算机呈现出一冲突。可给予该计算机的用户解决该冲突的能力。用户可选择保持哪个δ数据项,并当与文件系统40协调时使用该数据项。
F.硬件描述
图11示出实施本发明的实施例的计算机系统1100的框图。计算机系统1100包括用于传送信息的总线1102或其它通信装置、以及与总线1102连接用于处理信息的处理器1104。计算机系统1100还包括主存储器1106,例如随机存取存储器(RAM)或其它动态存储装置,与总线1102连接,用于储存将被处理器1104执行的指令和信息。在执行由处理器1104执行的指令期间,主存储器1106还可用于储存临时变量或其它中间信息。计算机系统1100还包括只读存储器(ROM)1108或其它静态存储器,与总线1102连接,用于储存用于处理器1104的指令和静态信息。存储装置1110,例如磁盘或光盘,被提供并连接到总线1102用于储存信息和指令。
计算机系统1100可经由总线1102连接到显示器1112上,例如阴极射线管(CRT),用于向计算机用户显示信息。输入装置1114,包括字母数字键盘和其它键盘,连接到总线1102,用于将信息和命令选择传送给处理器1104。另一种用户输入装置是光标控制器1116,例如鼠标、跟踪球、或光标方向键,用于将方向信息和命令选择传送给处理器1104,并用于控制光标在显示器1112上的移动。这种输入装置通常在两个轴上具有二个自由度,第一轴(例如x)和第二轴(例如y),使得装置能在一个平面内限定位置。
本发明涉及用于实施本文中描述的技术的计算机系统1100的使用。根据本发明的一个实施例,响应处理器1104执行包含在主存储器1106中的一个或更多序列的一个或更多指令,通过计算机系统1100实现这些技术。这样的指令可从另一计算机可读介质如存储装置1110读入主存储器1106。包含在主存储器1106中的指令序列的执行使处理器1104执行本文中描述的处理步骤。在可选实施例中,可采用硬连线电路代替软件指令或与软件指令结合来实施本发明。这样,本发明的实施例不限于硬件电路和软件的任何特定组合。
本文中使用的术语“计算机可读介质”是指参与提供指令给处理器1104以执行的任何介质。这样的介质可采取多种形式,包括但不限于,非易失介质、易失介质、以及传输介质。例如,非易失介质包括光盘或磁盘,如存储装置1110等。易失介质包括动态存储器,如主存储器1106等。传输介质包括同轴电缆、铜线、以及光纤,包括含有总线1102的线路。传输介质还可采用声波或光波形式,如在无线电波和红外数据通信过程中产生的那些声波或光波。
通用形式的计算机可读介质举例来说包括软盘、软磁盘、硬盘、磁带、或任何其它磁性介质;CD-ROM、任何光学介质;穿孔卡、纸带纸条、带有孔图案的任何其它物理介质;RAM、PROM、EPROM、FLASH-EPROM、任何其它记忆芯片或卡式磁带;如下文中所描述的载波;或计算机可读的任何其它介质。
各种形式的计算机可读介质可用于向处理器1104传送一个或更多序列的一个或更多指令来进行执行。例如,这些指令可最初用远程计算机的磁盘承载。该远程计算机可将这些指令下载到其动态存储器内,并将这些指令使用调制解调器通过电话线发送。计算机系统1100本地的调制解调器可通过电话线上接收数据,并使用红外发送器将数据转化为红外信号。红外探测器能接收在红外信号中承载的数据,适宜的电路将数据放到总线1102上。总线1102将该数据传送到主存储器1106,处理器1104从该主存储器1106取回并执行这些指令。主存储器1106收到的指令可在处理器1104执行之前或之后随机地储存在存储装置1110上。
计算机系统1100还包括连接到总线1102的通信接口1118。通信接口1118提供一种连接到网络链路1120的双向数据项通信,该网络链路1120连接到局域网1122上。例如,通信接口1118可以是集成服务数字网络(ISDN)卡或调制解调器,以提供与相应类型的电话线的数据通信连接。再例如,通信接口1118可以是局域网(LAN)卡,以提供一种与兼容LAN的数据通信连接。无线链路也可被使用。在任一这样的实施方式中,通信接口1118发送并接收电信号、电磁信号、或光信号,这些信号承载有表示各种类型信息的数字数据流。
网络链路1120通常通过一个或多个网络来提供与其它数据装置的数据通信。例如,网络链路1120可通过局域网1122提供与主计算机1124的连接,或与由互联网服务提供商(ISP)1126操作的数据设备的连接。ISP 1126又通过现在通称为“互联网”的全球分组数据通信网络1128提供数据通信服务。局域网1122和互联网1128都使用电信号、电磁信号、或光信号承载数字数据流。通过各种网络的信号和通过网络链路1120的信号以及通过通信接口1118的信号,这些信号将数字数据传送到计算机系统1100或从计算机系统1100传送,是传输信息的载波的典型形式。
计算机系统1100可通过网络、网络链路1120、和通信接口1118发送包括程序代码消息和接收包括程序代码数据。在互联网的例子中,服务器1130可通过互联网1128、ISP 1126、局域网1122、和通信接口1118传输所请求的应用程序代码。
当收到代码时,处理器1104可执行收到的代码,并/或将其储存在存贮设备1110或其它非易失存贮器中以便以后执行。这样,计算机系统1100可以获得载波形式的应用程序代码。
G.可选实施例
虽然本文中提供的实施例(参看如图1)描述了元数据信息形式的协调信息,但其它实施例可使用第一部分46(图1)中的数据项的部分内容或全部内容,从而识别对工作版本50的改变(图1)。特别地,内容匹配可被用于确定一个数据项是否是从另一数据项复制的。假定具有特定类型的相似数据项彼此是副本,则可采用智能算法检测数据项内容之间的相似性。
内容匹配还可被用作如参看图9描述的流程中的附加步骤。例如,如果等价操作被检测为由步骤970示出,则不可能确定该数据项是否是新的、编辑的、以及复制的。为了检测一个数据项是否是另一为新的数据项的编辑副本,可要求内容匹配。
内容匹配的另一用途是如果数据项的一个或两个时间值与另一数据项的时间值完全相同,则可以作为相同时的判定方式(tie-breaker)。考虑在通用操作系统如WINDOWS等应用的时间值的有效位数(significant digit)(即百万分之一秒),两个数据项具有完全相同的创建时间或修改时间的机会是极少的。然而,如果不同数据项的时间值完全匹配,则本发明的实施例允许内容匹配对这两个数据项辨认。
虽然已经描述了用于使在不同计算机上运行的文件同步的本发明的实施例,但应当注意到,其它实施例可被应用到独立的或单独的计算机系统。例如,本发明的实施例的一个应用是使一个含有多个条目的文件与创建为档案文件的备份文件同步。不需要与其它计算机系统交互。
在一些应用中,不检测某些等价的组合操作而假定在数据项上执行更简单的操作,可能更有用。另一方面,可检测到等价的组合操作,但是可使用其它操作更新该文件系统40。例如,本发明的实施例可将等价组合操作(Nx)Cy视为Nx和Ny。这样,在同步期间,将指示文件系统40添加两个新数据项。同样,组合操作E(xCy)可被视为Ny,其中可指示文件系统40创建一个新文件,而不是将X复制到Y,然后编辑该文件。
H.结论
在上述说明中,已参看其具体实施例描述了本发明。然而,显然的是,可对其作出各种修改和改变,而不背离本发明的主要精神和范围。从而,说明书和附图被认为是示范性的,并无限制意义。