專利名稱:用于網絡文件系統的管理和同步應用程序的制作方法
技術領域:
本發明涉及用于管理網絡文件的應用程序。具體地,本發明的實施例涉及為了同步而檢測文件系統的改變。
背景技術:
當多個文件系統包含完全相同的內容時,該文件系統被稱為是“同步的”。為了使文件系統保持同步,同步應用程序需要檢測文件系統之間的差別,然后執行操作消除該差別。通常,同步應用程序被用于使需要存取相同文件不同副本的不同計算機的文件系統同步。需要彼此同步的一套文件系統在本文中稱為“同步集”。屬于給定同步集的每個文件系統都稱為“同步系統”。
使同步集同步的動作稱為同步操作。在每個同步操作過程中,同步應用程序通常嘗試檢測在任何同步系統中從前一同步操作以后何時數據項已被刪除或被添加。
通常,同步應用程序設法將那些被檢測為從前一同步操作之后正在加入任一同步系統的數據項加入所有同步系統。同樣,同步應用程序設法將那些從前一同步操作以來正在從任一同步系統刪除的數據項從所有同步系統中刪除。
通常,該同步應用程序將不區分添加項是(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--編輯文件XDx--刪除文件XNx--創建新數據項XxMy--X移動到YxCy--X復制為Y根據本發明的一實施例,可將組合運算減少和提取出有限數目的等價組合操作。在進行提取的過程中所使用原則的一些實例包括(1)如果數據項被刪除,在該數據項上執行的先前的操作可被忽略;(2)數據項的從最初資源到最終目的地的多個移動可被視為一個移動;以及(3)在操作組合上執行的任何移動操作可以以其它操作的任何次序被分析,從而假定移動是在另一操作提供真實并簡化的結果后執行的。使用這些原則,可假定任一工作數據項都經歷九種可能的操作或操作組合之一,其中操作組合是其它操作組合的等價物。可為文件系統40復制在工作版本50上執行的操作,作為五個主操作之一或四個等價組合操作之一。在一個實施例中,四個等價組合操作是ExMy--編輯X并將其移動到Y(Nx)Cy--創建X并將其復制為YE((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.結論在上述說明中,已參看其具體實施例描述了本發明。然而,顯然的是,可對其作出各種修改和改變,而不背離本發明的主要精神和范圍。從而,說明書和附圖被認為是示范性的,并無限制意義。
權利要求
1.一種管理文件的方法,所述方法包括將關于文件系統的信息映射到比較文件,所述信息用于至少識別在所述文件系統中位于第一位置的第一數據項,可通過第一位置信息識別所述第一位置;生成一部分所述文件系統的工作版本,所述工作版本至少包括對應所述第一數據項的第一工作數據項,所述第一工作數據項最初位于第二位置,可通過所述第一位置信息識別所述第二位置;以及使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述第一工作數據項是否位于可通過第二位置信息識別的第三位置,所述第二位置信息與所述第一位置信息不同。
2.根據權利要求1所述的方法,其中如果所述第一工作數據項位于所述第三位置,則所述方法包括使所述文件系統中的所述第一數據項移動到可通過所述第二位置信息識別的第四位置。
3.根據權利要求1所述的方法,使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述第一工作數據項是否位于可通過第二位置信息識別的第三位置的步驟包括確定所述第一工作數據項是否具有新名稱。
4.根據權利要求3所述的方法,其中生成一部分所述文件系統的工作版本包括在所述比較文件中記錄所述第一工作數據項的創建時間。
5.根據權利要求3所述的方法,其中使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述第一工作數據項是否位于可通過第二位置信息識別的第三位置的步驟包括使用所述創建時間在所述工作版本中查找所述第一工作數據項。
6.根據權利要求1所述的方法,還包括如果所述第一工作數據項已被從所述工作版本中刪去,則用信號通知所述文件系統刪除所述第一數據項。
7.根據權利要求6所述的方法,還包括使用所述第一工作數據項的所述創建時間確定所述第一工作數據項已被從所述工作版本中刪除。
8.根據權利要求4所述的方法,其中生成一部分所述文件系統的工作版本的步驟包括在所述比較文件中記錄所述第一工作數據項的修改時間。
9.根據權利要求1所述的方法,還包括確定所述第一工作數據項是否在生成所述工作版本后被編輯。
10.根據權利要求8所述的方法,還包括使用所述第一工作數據項的修改時間,確定所述第一工作數據項是否在生成所述工作版本后被編輯。
11.根據權利要求10所述的方法,還包括確定所述第一數據項的后來的修改時間是否與所記錄的所述第一工作數據項的修改時間不同。
12.一種管理文件的方法,所述方法包括將關于文件系統的信息映射到比較文件;生成一部分所述文件系統的工作版本;以及使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過。
13.根據權利要求12所述的方法,還包括在確定所述第一工作數據項曾經從所述第二工作數據項復制后,使所述文件系統的所述部分包括所述第一工作數據項。
14.根據權利要求12所述的方法,其中所述第二工作數據項來源于所述部分文件系統中的第一數據項。
15.根據權利要求13所述的方法,其中在生成所述工作版本后,將所述第二工作數據項創建為新數據項。
16.根據權利要求13所述的方法,其中所述第一工作數據項的內容與所述第二工作數據項的內容不同。
17.根據權利要求14所述的方法,其中生成工作版本的步驟包括在所述比較文件中記錄所述第二工作數據項的創建時間和修改時間。
18.根據權利要求17所述的方法,其中使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括識別所述第一工作數據項的創建時間和修改時間。
19.根據權利要求18所述的方法,其中使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括檢測所述第一工作數據項的修改時間在所述第一工作數據項的創建時間之前。
20.根據權利要求19所述的方法,其中使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括使所述第一工作數據項的修改時間與所述第二工作數據項的修改時間匹配。
21.根據權利要求12所述的方法,還包括確定所述第一工作數據項是否是在從所述第二工作數據項復制后被編輯的。
22.根據權利要求12所述的方法,還包括如果所述第一工作數據項的創建時間與通過所述比較文件識別的所有數據項的創建時間不同,且如果所述第一工作數據項的修改時間大于或等于所述第一工作數據項的創建時間,則確定所述第一工作數據項是新的。
23.根據權利要求22所述的方法,還包括在確定所述第一工作數據項為新數據項后,使所述文件系統的所述部分包括所述第一工作數據項。
24.根據權利要求12所述的方法,其中使用所述比較文件中的信息和關于所述工作版本的信息,隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括將所述第一工作數據項的內容與所述第二工作數據項的內容進行比較。
25.一種管理文件的方法,所述方法包括將關于文件系統的信息映射到比較文件,所述信息用于至少識別在所述文件系統中位于第一位置的第一數據項,可通過第一位置信息識別所述第一位置;生成一部分所述文件系統的工作版本,所述工作版本至少包括源于所述第一數據項的第一工作數據項,所述第一工作數據項最初位于第二位置,可通過所述第一位置信息識別所述第二位置;以及使用所述比較文件中的信息和關于所述工作版本的信息,以檢測兩個操作中的至少一個是否是在所述工作版本上執行的,所述操作包括改變所述第一工作數據項的所述第一位置信息,并編輯所述第一工作數據項的內容。
26.根據權利要求25所述的方法,其中生成一部分所述文件系統的工作版本的步驟包括在所述比較文件中記錄所述第一工作數據項的最初修改時間,所述最初修改時間用于記錄所述第一工作數據項被編輯或創建時的最后時刻。
27.根據權利要求26所述的方法,其中檢測編輯所述第一工作數據項的內容的操作的步驟包括隨后確定所述最初修改時間是否被改變。
28.根據權利要求27所述的方法,還包括使所述文件系統的所述第一數據項包括所述第一工作數據項的被編輯的內容。
29.根據權利要求25所述的方法,其中生成所述文件系統的工作版本包括記錄所述第一工作數據項的創建時間。
30.根據權利要求29所述的方法,其中使用所述比較文件中的信息和關于所述工作版本的信息以檢測兩個操作中的至少一個是否在所述工作版本上執行的步驟包括使用所述創建時間在所述工作版本中查找所述第一工作數據項。
31.一種管理文件的方法,所述方法包括將關于文件系統的信息映射到比較文件,所述信息用于至少識別在所述文件系統中位于第一位置的第一數據項,可通過第一位置信息識別所述第一位置;生成一部分所述文件系統的工作版本,所述工作版本至少包括源于所述第一數據項的第一工作數據項,所述第一工作數據項最初位于第二位置,可通過所述第一位置信息識別所述第二位置;以及使用所述比較文件中的信息和關于所述工作版本的信息,以確定是否在所述第一工作數據項上執行組合操作,所述組合操作包括來自一套操作中的至少兩個連續操作,該套操作包括改變所述第一工作數據項的第一位置信息、從所述第一工作數據項生成第一工作副本、以及編輯所述第一工作數據項的內容。
32.根據權利要求31的方法,還包括使所述文件系統的所述部分合并由在所述工作版本上執行的操作所做出的改變,從而使所述第一數據項匹配所述第一工作數據項。
33.根據權利要求31的方法,其中在所述至少兩個組合操作中的一個是從所述第一工作數據項生成第一工作副本的情況下,所述方法還包括確定在所述工作版本中所選擇的工作數據項是否曾經從所述第一工作數據項復制過。
34.一種計算機系統,包括存儲器,用于儲存位于第二計算機系統上的一部分文件系統的工作版本;以及處理器,用于至少標記所述工作版本中的第一工作數據項的創建時間,所述第一工作數據項源于所述文件系統的所述部分的第一數據項,所述處理器隨后使用所述創建時間檢測在所述第一工作數據項上執行的操作。
35.根據權利要求34所述的計算機系統,還包括網絡接口,用于通過網絡與所述第二計算機交換通信,所述通信用于產生所述工作版本。
36.根據權利要求34所述的計算機系統,其中所述處理器使用所述創建時間確定所述第一工作數據項的位置后來是否被改變過。
37.根據權利要求34所述的計算機系統,其中所述處理器使用所述創建時間確定多個操作是否在所述第一工作數據項上被執行。
38.根據權利要求34所述的計算機系統,其中所述處理器用于最初用所述創建時間標記修改時間,當所述第一數據項后來被編輯時改變所述修改時間。
39.根據權利要求38所述的計算機系統,其中所述處理器將所述創建時間與所述修改時間進行比較,以識別在所述第一工作數據項上執行的所述操作。
40.根據權利要求38所述的計算機系統,其中如果在最初被標記后改變所述修改時間,則所述處理器檢測到所述第一工作數據項的內容被編輯。
41.根據權利要求38所述的計算機系統,其中為了確定所述第二工作數據項是否曾經從所述第一工作數據項復制過,所述處理器檢測第二工作數據項是否具有所述第一工作數據項的修改時間。
42.根據權利要求38所述的計算機系統,其中所述處理器檢測所述第一工作數據項的所述創建時間,以確定所述第一工作數據項被移動到新位置,其中所述處理器檢測所述第一工作數據項的所述修改時間已經改變,以確定所述第一工作數據項同時也被編輯過。
43.一種計算機系統,包括存儲器,用于儲存一部分文件系統的工作版本,所述文件系統可第二計算機上訪問,所述工作版本包括多個工作數據項,所述存儲器還用于儲存包含關于所述多個工作數據項的信息;以及處理器,用于當第一套工作數據項最初儲存在所述存儲器中時,至少記錄所述工作版本中的所述第一套工作數據項的第一時間值,所述處理器隨后識別所述工作版本中的第二工作數據項的第一時間值,所述處理器將所述第二工作數據項的第一時間值與所述第一套工作數據項的第一時間值進行比較,以檢測在所述工作版本上執行的對所述第二工作數據項造成影響的操作。
44.根據權利要求43所述的計算機系統,還包括網絡接口,用于通過網絡與所述第二計算機交換通信,所述通信用于從所述文件系統產生所述工作版本。
45.根據權利要求43所述的計算機系統,其中所述處理器在比較文件中記錄所述第一套工作數據項的第一時間值。
46.根據權利要求44所述的計算機系統,其中所述比較文件還包括關于所述文件系統的所述部分中的多個數據項的信息,其中所述多個工作數據項的至少一些源于所述文件系統的部分中的所述多個數據項。
47.根據權利要求43所述的計算機系統,其中所述第一工作數據項的所述第一時間值對應于那些數據項的創建時間。
48.根據權利要求43所述的計算機系統,其中所述檢測操作包括記錄所述第一套工作數據項的所述第一時間值之后創建所述第二數據項。
49.根據權利要求48所述的計算機系統,其中所述檢測操作包括將所述第二數據項創建為所述第一套工作數據項中的一個的副本。
50.根據權利要求43所述的計算機系統,其中當所述第一套工作數據項最初儲存在所述存儲器中時,所述處理器至少記錄所述第一套工作數據項中的每個的第二時間值,所述第二時間值對應于所述對應的數據項的內容最后被改變或創建的修改時間。
51.根據權利要求50所述的計算機系統,其中所述處理器識別第二工作數據項的第二時間值,并將所述第二工作數據項的第一時間值和第二時間值與所述第一套工作數據項的第一時間值和第二時間值進行比較,從而識別所述操作。
52.根據權利要求51所述的計算機系統,其中所述第一套工作數據項源于所述文件系統的所述部分中的相應數據項,且其中當在接收所述工作數據項之后創建所述第二工作數據項時,所述處理器檢測所述操作。
53.根據權利要求52所述的計算機系統,其中當從所述第一套工作數據項中的一個創建所述第二工作數據項時,所述處理器檢測所述操作。
54.根據權利要求53所述的計算機系統,其中當將所述第二工作數據項創建為新數據項時,所述處理器檢測所述操作。
55.根據權利要求53所述的計算機系統,其中所述第一工作數據項的第一時間值對應于那些數據項的創建時間,其中用于所述第二工作數據項的第二時間值和用于所述第一套工作數據項的第二時間值對應于所述工作版本中各個工作數據項的修改時間。
56.根據權利要求55所述的計算機系統,其中如果所述第二時間值匹配所述第一套工作數據項中的一個的第一時間值,當從所述第一套工作數據項中的一個創建所述第二工作數據項時,檢測所述操作。
57.根據權利要求55所述的計算機系統,其中多個操作被檢測,所述多個操作包括創建第三工作數據項的第一操作、以及將所述第二工作數據項創建為所述第三工作數據項的副本的第二操作。
58.根據權利要求57所述的計算機系統,其中如果所述第三工作數據項的第一時間值與所述第一套工作數據項中的一個的第一時間值不匹配,當將所述第三工作數據項創建為新數據項時,所述處理器檢測所述第一操作。
59.根據權利要求58所述的計算機系統,其中如果第二工作數據項的第二時間值在所述第二工作數據項的第一時間值之前,且如果所述第二工作數據項的第二時間值匹配所述第三工作數據項的第一時間值,則當將所述第二工作數據項創建為所述第三工作數據項的副本時,所述處理器檢測所述第二操作。
60.一種計算機系統,包括服務器,用于儲存文件系統;以及客戶端,可連接到所述文件系統,取回所述文件系統的至少一部分,所述文件系統的所述部分可作為工作版本在所述客戶端上得到,所述工作版本最初包括多個工作數據項,每個工作數據項源于所述文件系統中的對應數據項;以及處理資源,用來記錄關于所述工作版本的最初信息,并隨后檢測在所述工作版本上執行的兩個或更多個操作,所述操作選自由以下組成的操作組將數據項添加到所述工作版本中、編輯所述工作版本中的數據項、從所述工作版本刪除數據項、以及將所述工作版本中的數據項移動到新位置。
61.根據權利要求60所述的計算機系統,其中所述處理資源用信號通知所述文件系統,以改變所述文件系統中的至少一些,從而反映在所述工作版本上執行的所述操作。
62.根據權利要求60所述的計算機系統,其中將數據項添加到所述工作版本的所述操作包括從所述工作版本中的第一工作數據項復制出第二工作數據項。
63.根據權利要求60所述的計算機系統,其中所述添加數據項到所述工作版本的操作包括將第二工作數據項創建為新數據項。
64.根據權利要求60所述的計算機系統,其中所述關于所述工作文件被記錄的初始信息包括所述工作版本中的多個工作數據項的第一時間值,所述第一時間值表示每個工作數據項源于多個工作數據項中的另一工作數據項或服務器上的另一數據項的時間。
65.根據權利要求64所述的計算機系統,其中所述第一時間值是對應于那個數據項在所述客戶端上創建的時間的創建時間。
66.根據權利要求64所述的計算機系統,其中所述第一時間值是記錄改變或創建那個數據項的最后時刻的修改時間。
67.根據權利要求60所述的計算機系統,其中所述處理資源位于所述客戶端上。
68.根據權利要求60所述的計算機系統,其中所述處理資源位于所述服務器上。
69.根據權利要求59所述的計算機系統,其中所述處理資源在所述客戶端和所述服務器之間共享。
70.根據權利要求60所述的計算機系統,其中所述文件系統被與多個客戶端共享,所述多個客戶端中的每個都能改變所述文件系統,且其中當所述客戶端作出使所述工作版本與所述文件系統進行比較的請求時,將所述文件系統的改變的版本用信號通知所述客戶端。
71.根據權利要求70所述的計算機系統,其中所述服務器將所述文件系統的改變的版本用信號通知所述客戶端,其中所述處理資源位于所述客戶端上,所述處理資源記錄了關于所述工作版本的最初信息之后,檢測在所述文件系統上執行的一個或更多操作。
72.根據權利要求71所述的計算機系統,其中所述處理資源將所述文件系統的所述改變的版本與關于所述工作版本記錄的最初信息相比較,以檢測在所述文件系統上執行的一個或更多操作。
73.根據權利要求72所述的計算機系統,其中所述處理資源用信號通知所述用戶選擇是否使用因一個或多個操作而被改變或創建的每個工作版本數據項更新所述文件系統。
74.根據權利要求73所述的計算機系統,其中所述處理資源用信號通知所述用戶選擇是否用在所述改變的文件系統中的每個數據項更新所述文件系統,所述每個數據項由于在所述文件系統上執行的一個或多個操作而被創建或改變。
75.根據權利要求74所述的計算機系統,其中所述處理資源用信號通知所述用戶在所述工作版本的第一數據項和所述改變的文件系統的第一數據項之間進行選擇,所述工作版本的第一數據項經歷來自該組操作的第一操作,所述文件系統的第一數據項經歷來自該組操作的第二操作,其中所述工作版本的第一數據項和所述改變的文件系統的第一數據項中的每個都源于所述文件系統中的第一數據項,其中所述第一操作與所述第二操作不同。
76.一種計算機可讀介質,用于承載管理文件的指令,所述指令包括用于執行以下步驟的指令將關于文件系統的信息映射到比較文件,所述信息用于至少識別在所述文件系統中位于第一位置的第一數據項,可通過第一位置信息識別所述第一位置;生成一部分所述文件系統的工作版本,所述工作版本至少包括源于所述第一數據項的第一工作數據項,所述第一工作數據項最初位于通過所述第一位置信息識別的第二位置上;以及使用所述比較文件中的信息和關于所述工作版本的信息確定所述第一工作數據項是否位于第三位置上,可通過第二位置信息識別所述第三位置,所述第二位置信息與所述第一位置信息不同。
77.根據權利要求76所述的計算機可讀介質,其中如果所述第一工作數據項位于所述第三位置,所述計算機可讀介質的指令包括使所述文件系統中的所述第一數據項移動到第四位置的指令,可通過所述第二位置信息識別所述第四位置。
78.根據權利要求76所述的計算機可讀介質,其中使用所述比較文件中的信息和關于所述工作版本的信息確定所述第一工作數據項是否隨后位于可通過第二位置信息識別的第三位置的步驟包括確定所述第一工作數據項是否具有新名稱的指令。
79.根據權利要求78所述的計算機可讀介質,其中所述生成一部分所述文件系統的工作版本的步驟包括在所述比較文件中記錄所述第一工作數據項的創建時間的指令。
80.根據權利要求78所述的計算機可讀介質,其中使用所述比較文件中的信息和關于所述工作版本的信息確定所述第一工作數據項是否隨后位于可通過第二位置信息識別的第三位置的步驟包括使用所述創建時間在所述工作版本中查找所述第一工作數據項的指令。
81.根據權利要求76所述的計算機可讀介質,還包括如果從所述工作版本中刪去所述第一工作數據項則用信號通知所述文件系統刪除所述第一數據項的指令。
82.根據權利要求81所述的計算機可讀介質,還包括使用所述第一工作數據項的創建時間確定所述第一工作數據項已從所述工作版本中刪除的指令。
83.根據權利要求79所述的計算機可讀介質,其中所述生成所述文件系統的工作版本的步驟包括在所述比較文件中記錄所述第一工作數據項的修改時間的指令。
84.根據權利要求76所述的計算機可讀介質,還包括確定是否在生成所述工作版本后編輯所述第一工作數據項的指令。
85.根據權利要求83所述的計算機可讀介質,還包括確定使用所述第一工作數據項的修改時間生成所述工作版本后是否編輯所述第一工作數據項的指令。
86.根據權利要求85所述的計算機可讀介質,其中所述使用所述第一工作數據項的修改時間的步驟包括確定所述第一工作數據項的以后的修改時間是否不同于所述第一工作數據項的被記錄的修改時間的指令。
87.一種計算機可讀介質,用于承載管理不同計算機上的文件的指令,所述指令包括執行以下步驟的指令將關于文件系統的信息映射到比較文件;生成所述文件系統的一部分的工作版本;以及使用所述比較文件中的信息和關于所述工作版本的信息以隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過。
88.根據權利要求87所述的計算機可讀介質,還包括在確定所述第一工作數據項曾經從所述第二工作數據項復制過后,使所述文件系統包含所述第一工作數據項的指令。
89.根據權利要求87所述的計算機可讀介質,其中所述第二工作數據項源于所述文件系統中的第一數據項。
90.根據權利要求88所述的計算機可讀介質,其中所述第一工作數據項的內容與所述第二工作數據項的內容不同。
91.根據權利要求89所述的計算機可讀介質,其中所述生成工作版本的步驟包括在所述比較文件中記錄所述第二工作數據項的創建時間和修改時間的指令。
92.根據權利要求91所述的計算機可讀介質,其中所述使用所述比較文件中的信息和關于所述工作版本的信息以隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括識別所述第一工作數據項的創建時間和修改時間的指令。
93.根據權利要求92所述的計算機可讀介質,其中所述使用所述比較文件中的信息和關于所述工作版本的信息以隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括檢測所述第一工作數據項的修改時間在所述第一工作數據項的創建時間之前的指令。
94.根據權利要求93所述的計算機可讀介質,其中所述使用所述比較文件中的信息和關于所述工作版本的信息以隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括使所述第一工作數據項的修改時間與所述第二工作數據項的修改時間匹配的指令。
95.根據權利要求89所述的計算機可讀介質,還包括執行確定所述第一工作數據項是否是在從所述第二工作數據項復制后被編輯的步驟的指令。
96.根據權利要求87所述的計算機可讀介質,還包括如果所述第一工作數據項的所述創建時間與通過所述比較文件識別的所有數據項的創建時間不同,且如果所述第一工作數據項的修改時間大于或等于所述第一工作數據項的所述創建時間,則執行確定所述第一工作數據項是新文件的步驟的指令。
97.根據權利要求96所述的計算機可讀介質,還包括在確定所述第一工作數據項是新數據項之后執行使所述文件系統包含所述第一工作數據項的步驟的指令。
98.根據權利要求82所述的計算機可讀介質,其中所述使用所述比較文件中的信息和關于所述工作版本的信息以隨后確定所述工作版本中的第一工作數據項是否曾經從所述工作版本中的第二工作數據項復制過的步驟包括將所述第一工作數據項的內容與所述第二工作數據項的內容進行比較的指令。
99.一種管理文件的計算機可讀介質,所述計算機可讀介質用于承載指令,所述指令包含執行以下步驟的指令將關于文件系統的信息映射到比較文件,所述信息用于至少識別所述文件系統中位于第一位置的第一數據項,可通過第一位置信息識別所述第一位置;生成一部分所述文件系統的工作版本,所述工作版本至少包括源于所述第一數據項的第一工作數據項,所述第一工作數據項最初位于第二位置,通過所述第一位置信息可識別所述第二位置;以及使用所述比較文件中的信息和關于所述工作版本的信息,檢測兩個操作中的至少一個是否在所述工作版本上執行,所述操作包括改變所述第一工作數據項的第一位置信息、以及編輯所述第一工作數據項的內容。
100.根據權利要求99所述的計算機可讀介質,其中所述生成所述文件系統的部分的工作版本的步驟包括在所述比較文件中記錄所述第一工作數據項的初始修改時間的指令,所述初始修改時間用于記錄編輯或修改所述第一工作數據項的最后時刻。
101.根據權利要求100所述的計算機可讀介質,其中所述使用所述比較文件中的信息和關于所述工作版本的信息檢測兩個操作中的至少一個是否在所述工作版本上執行的步驟包括用于隨后確定所述初始修改時間是否被改變的指令。
102.根據權利要求101所述的計算機可讀介質,還包括用于執行使所述文件系統包含所述第一工作數據項的編輯過的內容的步驟的指令。
103.根據權利要求99所述的計算機可讀介質,其中所述生成一部分所述文件系統的工作版本的步驟包括用于記錄所述第一工作數據項的創建時間的指令。
104.根據權利要求103所述的計算機可讀介質,其中所述使用所述比較文件中的信息和關于所述工作版本的信息檢測兩個操作中的至少一個是否在所述工作版本上執行的步驟包括使用所述創建時間在所述工作版本中查找所述第一工作數據項的指令。
105.一種計算機可讀介質,用于承載用于管理文件的指令,所述指令包括用于執行以下步驟的指令將關于文件系統的信息映射到比較文件,所述信息用于至少識別所述文件系統中位于第一位置的第一數據項,可通過第一位置信息識別所述第一位置;生成一部分所述文件系統的工作版本,所述工作版本至少包括源于所述第一數據項的第一工作數據項,所述第一工作數據項最初位于第二位置,可通過所述第一位置信息識別所述第二位置;以及使用所述比較文件中的信息和關于所述工作版本的信息,以確定組合操作是否在所述第一工作數據項上執行,所述組合操作至少包括來自一套操作中的兩個連續操作,該套操作包括改變所述第一工作數據項的第一位置信息、從所述第一工作數據項生成第一工作副本、以及編輯所述第一工作數據項的內容。
106.根據權利要求105所述的計算機可讀介質,還包括指令,用于指示在所述第一工作數據項上執行哪個操作,如果所述組合操作被確定為已被執行,則改變所述文件系統中的第一數據項。
107.根據權利要求105所述的計算機可讀介質,其中對于所述至少兩個組合操作中的一個是從所述第一工作數據項生成第一工作副本,所述計算機可讀介質還包括指令,用于確定所選擇的所述工作版本中的工作數據項是否曾經從所述第一工作數據項復制過。
全文摘要
本發明提供了一種管理文件的應用程序。將關于文件系統的信息映射到比較文件上。從文件系統生成工作版本。該應用程序識別在工作版本上執行的一個或多個操作。在同步操作期間,所識別的操作在文件系統上重新產生。
文檔編號G06F12/00GK1516832SQ02812235
公開日2004年7月28日 申請日期2002年5月24日 優先權日2001年5月25日
發明者伊利婭·基爾諾斯, 伊利婭 基爾諾斯 申請人:甲骨文國際公司