两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

共享文件夾和文件的同步的制作方法

文檔序號:11530756閱讀:897來源:國知局
共享文件夾和文件的同步的制造方法與工藝

背景

隨著云計算的增加,用戶為與遠程計算機或一系列遠程計算機相關聯的遠程存儲器內的文件和文件夾作備份的能力顯著地增加。在某些情況下,可通過其他計算裝置將對遠程存儲器內的文件和文件夾的訪問授權給另外的用戶。因此,文件和文件夾可通過遠程存儲器在多個用戶和用戶裝置上共享。

此外,單個用戶可下載遠程存儲的特定文件的副本,編輯所述特定文件并且將所編輯的文件上傳給遠程存儲器。所編輯的文件之后可通過多個用戶的特定計算裝置與所述多個用戶共享。

附圖簡述

參考附圖來描述詳細的說明。在附圖中,參考數字最左側的數字標識首次出現該參考數字的附圖。不同附圖中的相同參考數字指示類似或相同項目。

圖1示出用于使共享文件夾和文件同步的系統(tǒng)。

圖2示出示例性文件系統(tǒng)。

圖3示出示例性文件夾。

圖4示出將文件和主散列列表上傳到遠程文件系統(tǒng)的示例性過程的流程圖。

圖5示出用于使共享文件夾和文件同步的示例性過程的流程圖的第一部分。

圖6示出用于使共享文件夾和文件同步的示例性過程的流程圖的第二部分。

圖7示出用于使來自本地文件系統(tǒng)的文件同步的示例性過程的流程圖。

圖8示出用于使來自遠程文件系統(tǒng)的文件同步的示例性過程的流程圖。

圖9示出用于遍歷文件夾樹和子文件夾樹以定位文件變化用于同步的示例性過程的流程圖。

詳述

本文描述的是使共享文件夾和文件在遠程文件系統(tǒng)與多個本地文件系統(tǒng)之間同步的系統(tǒng)和過程。在特定方面,本共享文件夾和文件同步系統(tǒng)是基于狀態(tài)的系統(tǒng),所述基于狀態(tài)的系統(tǒng)可確定一個或多個本地文件系統(tǒng)的當前狀態(tài)和遠程文件系統(tǒng)的當前狀態(tài)。然后,可將每個本地文件系統(tǒng)的當前狀態(tài)與遠程文件系統(tǒng)的當前狀態(tài)進行比較來確定差異是否存在。如果差異存在,那么共享文件夾和文件同步系統(tǒng)可確定在特定本地文件系統(tǒng)、遠程文件系統(tǒng)或兩者處可能所必需的內容的變化,以便使那些文件系統(tǒng)中的每一個包括相同內容并且是彼此的復本。本公開的技術的一些實施方案可例如在文檔協(xié)作環(huán)境中使用。

本地文件系統(tǒng)和遠程文件系統(tǒng)可包括存儲在特定共享數據結構中的內容。所述共享數據結構可包括共享文件夾、共享子文件夾、共享文件、共享子級文件、共享快捷方式或其組合。每個共享文件夾可包括共享文件夾的本地實例和共享文件夾的遠程實例,所述本地實例和所述遠程實例在執(zhí)行同步之后應基本上是相同的并且包括相同內容。每個共享子文件夾可包括共享子文件夾的本地實例和共享子文件夾的遠程實例,所述本地實例和所述遠程實例在執(zhí)行同步之后應基本上是相同的并且包括相同內容。此外,每個共享文件可包括共享文件的本地實例和共享文件的遠程實例,所述本地實例和所述遠程實例在執(zhí)行同步之后應基本上是相同的并且包括相同內容或數據。此外,每個共享子級文件可包括共享子級文件的本地實例和共享子級文件的遠程實例,所述本地實例和所述遠程實例在執(zhí)行同步之后應基本上是相同的并且包括相同內容或數據。最后,此外,每個共享快捷方式可包括共享快捷方式的本地實例和共享快捷方式的遠程實例,所述本地實例和所述遠程實例在執(zhí)行同步之后應基本上是相同的并且包括相同內容或數據。

共享文件夾和文件同步系統(tǒng)可利用本地安裝在每個用戶或客戶端處的本地同步模塊、計算裝置和遠程或分布式計算資源處的遠程同步模塊。本地同步模塊和遠程同步模塊可與彼此通信以便交換關于每個本地文件系統(tǒng)和遠程文件系統(tǒng)的狀態(tài)的信息,以便使文件編輯在整個共享文件夾和文件中保持最新并且在本地文件系統(tǒng)和遠程文件系統(tǒng)中的每一個中保持同步。

在一方面,替代監(jiān)視存儲在特定共享文件夾和共享子文件夾內的實際內容以便確定特定共享文件或其中的內容是否已經被更新、編輯、刪除或以其他方式改變,所述系統(tǒng)可監(jiān)視與每個共享文件夾、共享子文件夾、共享文件、共享子級文件和共享快捷方式相關聯的屬性。所述屬性可以是與特定文件夾、特定子文件夾、特定文件、特定子級文件或特定快捷方式相關聯的唯一標識符。當存儲在文件夾和子文件夾內的特定文件、子級文件和快捷方式的內容被更改時,所述屬性可被重新計算并且重新記錄至主列表。

通常,用于使共享文件夾、共享子文件夾、共享文件、共享子級文件和共享快捷方式同步的方法可包括可包括確定遠程文件系統(tǒng)狀態(tài)和確定本地文件系統(tǒng)狀態(tài)。此外,所述方法可包括將遠程文件系統(tǒng)狀態(tài)和本地文件系統(tǒng)狀態(tài)進行比較來確定共享文件夾的遠程實例、共享子文件夾的遠程實例、共享文件的遠程實例、共享子級文件的遠程實例或共享快捷方式的遠程實例是否包括與共享文件夾的對應的本地實例、共享子文件夾的對應的本地實例、共享文件的對應的本地實例、本地共享子級文件的對應的實例或本地共享快捷方式的對應的實例的本地文件系統(tǒng)屬性不同的遠程文件系統(tǒng)屬性??墒惯h程文件系統(tǒng)屬性與本地文件系統(tǒng)屬性不同的共享文件夾、共享子文件夾、共享文件、共享子級文件或共享快捷方式同步,例如如下文更加詳細所述。

在特定方面,遠程文件系統(tǒng)屬性可包括被分配給共享文件夾的遠程實例的遠程文件夾值、被分配給共享子文件夾的遠程實例的遠程子文件夾值、被分配給共享文件的遠程實例的遠程文件值、被分配給共享子級文件的遠程實例的遠程文件值或被分配給共享快捷方式的遠程實例的遠程文件值。更具體地,遠程文件夾值可包括遠程文件夾散列,遠程子文件夾值可包括遠程子文件夾散列,遠程文件值可包括遠程文件散列,遠程子級文件值可包括遠程子級文件散列,并且遠程快捷方式值可包括遠程快捷方式散列。可基于遠程文件系統(tǒng)的遠程散列表來確定遠程文件夾散列、遠程子文件夾散列、遠程文件散列、遠程子級文件散列和遠程快捷方式散列。

在另一方面,本地文件系統(tǒng)屬性可包括被分配給共享文件夾的本地實例的本地文件夾值、被分配給共享子文件夾的本地實例的本地子文件夾值、被分配給共享文件的本地實例的本地文件值、被分配給共享子級文件的本地實例的本地子級文件值或被分配給共享快捷方式的本地實例的本地快捷方式值。此外,本地文件夾值可包括本地文件夾散列,本地子文件夾值可包括本地子文件夾散列,本地文件值可包括本地文件散列,本地子級文件值可包括本地子級文件散列,并且本地快捷方式值可包括本地快捷方式散列??苫诒镜匚募到y(tǒng)的本地散列表來確定本地文件夾散列、本地子文件夾散列、本地文件散列、本地子級文件散列和本地快捷方式散列。

例如,某些數據管理系統(tǒng)可利用散列表或散列映射以便追蹤特定文件存儲在存儲器內的位置。每個散列提供在存儲器內特定文件的位置。文件夾可包括文件夾散列。子文件夾可包括子文件夾散列。此外,文件可包括文件散列。子級文件可包括子級文件散列并且快捷方式可包括快捷方式散列。

子文件夾散列可以是與存儲在子文件夾中的文件相關聯的文件散列、與存儲在子文件夾內的任何子級文件相關聯的子級文件散列和與存儲在子文件夾內的任何快捷方式相關聯的快捷方式文件散列的函數。文件夾散列可以是與其中的子文件夾相關聯的子文件夾散列、與子文件夾內的文件相關聯的文件散列、子文件夾內的子級文件(如果存在的話)的子級文件散列、子文件夾內的快捷方式(如果存在的話)的快捷方式文件散列和與文件夾內的文件相關聯的文件散列的函數。文件散列、子級文件散列和/或快捷方式散列的任何變化使被分配給在其中存儲文件、子級文件和/或快捷方式的子文件夾的子文件夾散列改變。進而,將文件夾散列分配給在其中子文件夾響應于新的子文件夾散列而改變的文件夾。

因此,通過監(jiān)視被計算并且被分配給每個文件夾、子文件夾、文件、子級文件和/或快捷方式的散列的狀態(tài),共享文件夾和文件同步系統(tǒng)可快速地查明哪些文件夾、子文件夾、文件、子級文件、快捷方式或其組合已經被看到其中的數據的改變,而實際上無需監(jiān)視文件夾、子文件夾、文件、子級文件和/或快捷方式的內容。例如,同步模塊(例如,本地同步模塊、遠程同步模塊或其組合)可將散列的當前列表與特定文件系統(tǒng)的散列的最近列表進行比較。

同步模塊可快速地遍歷當前文件夾散列以確定哪些文件夾散列(如果有的話)與每個文件夾的最近記錄的文件夾散列不同。不同的任何文件夾散列向同步模塊提供如下指示:文件夾內的至少一個文件、至少一個子級文件或至少一個快捷方式或文件夾的子文件夾內的至少一個文件、至少一個子級文件或至少一個快捷方式已經被更改(例如,更新、編輯、刪除、創(chuàng)建等)。對于具有與主散列列表上的文件夾散列不同的文件夾散列的任何文件夾,同步模塊可遍歷與存儲在文件夾內的文件、子級文件和快捷方式相關聯的文件散列、子級文件散列或快捷方式散列以確定文件、子級文件和/或快捷方式中的哪一個已經被更改。

此外,對于具有新的或不同文件夾散列的每個文件夾,同步模塊可遍歷與文件夾內的子文件夾相關聯的子文件夾散列以確定哪些子文件夾(如果有的話)包括已經被更改的文件、子級文件和/或快捷方式。然后,對于具有不同子文件夾散列的任何子文件夾,同步模塊可遍歷與存儲在子文件夾內的文件、子級文件散列和快捷方式相關聯的文件散列、子級文件散列和/或快捷方式散列以確定子文件夾內的哪些文件、子級文件和/或快捷方式具有不同散列。包括不同散列的任何文件、子級文件和/或快捷方式被認為已經被更改并且使該特定文件、子級文件和/或快捷方式同步以包括最近動作。動作可包括對文件或文件內容的更新、編輯、添加、刪除或任何其他變化。

本文所描述的一個或多個實例提供用于使共享文件夾和文件在多個本地文件系統(tǒng)和一個或多個遠程文件系統(tǒng)上同步的過程。在各種實例中,一個處理單元或多個單元可通過來自模塊或api的編程而被配置以執(zhí)行本文所述的技術或過程。所述處理單元或多個單元可包括gpu、現場可編程門陣列(fpga)、另一類別的數字信號處理器(dsp)或在一些實例中可由cpu驅動的其他硬件邏輯部件中的一個或多個。例如而非進行限制,可使用的說明性類型的硬件邏輯部件包括專用集成電路(asic)、專用標準產品(assp)、片上系統(tǒng)的系統(tǒng)(soc)、復雜可編程邏輯裝置(cpld)等。

通常,共享文件夾和文件同步系統(tǒng)可包括在其上具有本地同步模塊和本地文件系統(tǒng)的一個或多個本地計算機可讀介質以及在其上具有遠程同步模塊和遠程文件系統(tǒng)的一個或多個遠程計算機可讀介質。此外,共享文件夾和文件同步系統(tǒng)可包括可操作地耦接到本地計算機可讀介質、遠程計算機可讀介質或其組合的處理單元。所述處理單元可適于執(zhí)行本地同步模塊、遠程同步模塊或其組合。

此外,本地同步模塊、遠程同步模塊或其組合可被配置來確定與遠程文件系統(tǒng)內的共享數據結構的遠程實例相關聯的遠程文件系統(tǒng)屬性并且確定與本地文件系統(tǒng)內的共享數據結構的本地實例相關聯的本地文件系統(tǒng)屬性。本地同步模塊、遠程同步模塊或其組合還可被配置來確定遠程文件系統(tǒng)屬性是否與本地文件系統(tǒng)屬性不同并且使遠程文件系統(tǒng)內的共享數據結構的遠程實例與本地文件系統(tǒng)內的共享數據結構的本地實例選擇性地同步,因此共享數據結構內的內容在遠程文件系統(tǒng)和本地文件系統(tǒng)處相同。

如上文所述,共享數據結構可包括共享文件夾、共享子文件夾、共享文件、共享子級文件、共享快捷方式或其組合。遠程文件系統(tǒng)屬性可包括從與遠程文件系統(tǒng)相關聯的遠程散列表檢索的遠程文件夾散列、遠程子文件夾散列、遠程文件散列、遠程子級文件散列或遠程快捷方式散列。此外,本地文件系統(tǒng)屬性可包括從與本地文件系統(tǒng)相關聯的本地散列表檢索的本地文件夾散列、本地子文件夾散列、本地文件散列、本地子級文件散列或本地快捷方式散列。

現參考圖1,共享文件夾和文件同步系統(tǒng)的詳細實例被示出并且通常由100指代。如所描繪,共享文件夾和文件同步系統(tǒng)100可包括至少一個網絡102。例如,網絡102可包括公共網絡(諸如互聯網)、私用網絡(諸如公共機構和/或個人內聯網)或私用網絡和公共網絡的某種組合。網絡102還可包括任意類型的有線網絡、無線網絡或其組合。此外,無線網絡可例如包括衛(wèi)星網絡、蜂窩網絡(例如,3g、4g等)、wi-fi網絡、wimax網絡、另一種無線網絡或其組合。此外,有線網絡可包括通過cat-5電纜、雙絞線電話線、同軸電纜、光纖電纜或其組合連接的以太網。在另一種實現中,網絡102可以是廣域網(wan)、局域網(lan)或其組合。此外,網絡102可包括簡易老式電話業(yè)務(pots)網絡。

網絡102可利用通信協(xié)議,所述通信協(xié)議包括基于分組和/或基于數據報的協(xié)議,諸如互聯網協(xié)議(ip)、傳輸控制協(xié)議(tcp)、用戶數據報協(xié)議(udp)或其他類型的協(xié)議。此外,網絡102還可包括促進網絡通信和/或形成網絡的硬件基礎的多個裝置,諸如交換機、路由器、網關、接入點、防火墻、基站、中繼器、主干網裝置等。

在一些實例中,網絡102還可包括能夠連接到無線網絡的一個或多個裝置,諸如無線接入點(wap)。另外的實例通過在各種電磁頻率(例如,無線電頻率)上發(fā)送和接收數據的wap(包括支持電氣與電子工程師學會(ieee)802.11標準(例如,802.11g、802.11n等)及其他標準的wap)支持連接性。

如圖1中進一步所示,共享文件夾和文件同步系統(tǒng)100還可包括連接到網絡102的第一分布式計算資源104、第二分布式資源106和第n分布式資源108。在各種實例中,分布式計算資源104、106、108可包括在集群或其他分組配置中操作以共享資源、平衡負載、增加性能、提供故障切換支持或冗余或出于其他目的的一個或多個計算裝置。分布式計算資源104、106、108還可包括可屬于各種分類或類別的裝置(諸如傳統(tǒng)服務器類型裝置、臺式計算機類型裝置、移動類型裝置、專用目的類型裝置、嵌入式類型裝置和/或可穿戴類型裝置)的計算裝置。

因此,分布式計算資源104、106、108可包括各種裝置類型并且不限于特定類型的裝置。分布式計算資源104、106、108可表示但不限于臺式計算機、服務器計算機、web服務器計算機、個人計算機、移動計算機、膝上型計算機、平板計算機、可穿戴式計算機、植入式計算裝置、電信裝置、汽車計算機、網絡使能的電視機、瘦客戶端、終端、個人數據助理(pda)、游戲控制臺、游戲裝置、工作站、媒體播放器、個人錄像機(pvr)、機頂盒、攝像機、用于包括在計算裝置中的集成部件、用具或任意其他類型的計算裝置。

圖1還示出關于第n分布式計算資源108的細節(jié)。應理解,第一分布式計算資源104和第二分布式計算資源106可以與第n分布式計算資源108基本相同的方式配置并且可結合第n分布式計算資源108包括本文所描述的部件中的全部或任意的組合。

如圖所示,第n分布式計算資源108可以是任意計算裝置,并且第n分布式計算資源108可包括例如通過總線114可操作地或電連接到計算機可讀介質112的一個或多個處理單元110。總線114可包括系統(tǒng)總線、數據總線、地址總線、pci總線、迷你pci總線和任何各種本地、外圍和/或獨立總線中的一個或多個。

第n分布式計算資源108還可包括一個或多個網絡接口116以能夠通過網絡102在第n分布式計算資源108與其他計算資源或裝置之間通信。網絡接口116可包括一個或多個網絡接口控制器(nic)或其他類型的收發(fā)器裝置以通過網絡發(fā)送和接收通信。在特定方面,如圖1中所示,可執(zhí)行指令可存儲在計算機可讀介質112上,并且那些指令可例如包括操作系統(tǒng)118、遠程共享文件夾和文件同步模塊120以及可由一個或多個處理單元110加載和執(zhí)行的其他模塊、程序或應用。

可替代地或此外,本文所描述的功能性可至少部分地由一個或多個硬件邏輯部件(諸如加速器)執(zhí)行。例如而非進行限制,可使用的說明性類型的硬件邏輯部件包括現場可編程門陣列(fpga)、專用集成電路(asic)、專用標準產品(assp)、片上系統(tǒng)的系統(tǒng)(soc)、復雜可編程邏輯裝置(cpld)等。例如,加速器可表示混合裝置,諸如來自zylex或altera的包括嵌入fpga架構的cpu核心的混合裝置。

第n分布式計算資源108的計算機可讀介質112還可包括遠程文件系統(tǒng)122或被劃分成具有遠程文件系統(tǒng)122,在所述遠程文件系統(tǒng)122中可存儲多個文件夾、子文件夾、文件或其組合。多個文件夾、子文件夾和文件可包括多個共享文件夾、共享子文件夾、共享文件、共享子級文件和共享快捷方式。更具體地,多個共享文件夾、共享子文件夾、共享文件、共享子級文件和共享快捷方式可包括多個共享文件夾的遠程實例、多個共享子文件夾的遠程實例和多個共享文件的遠程實例。

具體地,遠程文件系統(tǒng)122可利用密碼散列函數或其他散列函數以存儲和檢索存儲在遠程文件系統(tǒng)122內的文件和數據。所述散列函數可包括散列函數的衍生物,諸如md2、md4、md5、md6、sha-0、sha-1、sha-2、sha-3或其組合。在另一方面,散列函數可包括原始完整性校驗消息摘要(ripemd)散列函數、ripemd-160或其組合。在下文所描述的圖2和圖3提供關于可在遠程文件系統(tǒng)122內找到的示例性文件系統(tǒng)和示例性文件夾的更多細節(jié)。

圖1進一步指示計算機可讀介質112可包括存儲在其上的主散列列表124。如本文所述的主散列列表124可包括文件夾散列、子文件夾散列和文件散列的列表并且可用來與之比較文件夾散列、子文件夾散列和文件散列的當前狀態(tài),以便確定自最后的主散列列表被計算和記錄以來,文件夾、子文件夾和/或文件內的內容是否已經改變。

為了簡單起見,可通常與計算裝置(諸如第n分布式計算資源108)相關聯或隨所述計算裝置包括的其他部件或特征從圖1的第n分布式計算資源108的描繪中省略。這些其他部件或特征可包括但不限于a/c電源、d/c電源、各種連接器端口、各種線、各種led指示器、揚聲器、外殼、底盤、風扇、散熱器、輸入裝置、輸出裝置、顯示裝置等。

圖1還指示共享文件夾和文件同步系統(tǒng)100可包括第一客戶端計算裝置130、第二客戶端計算裝置132和第n客戶端計算裝置134??蛻舳擞嬎阊b置130、132、134可屬于多種分類或類別的裝置,所述多種分類或類別的裝置可與分布式計算資源104、106、108相同或不同。這些分類或類別的裝置可包括傳統(tǒng)的客戶端類型裝置、臺式計算機類型裝置、移動類型裝置、專用類型裝置、嵌入式類型裝置和/或可穿戴類型裝置。此外,客戶端計算裝置130、132、134可包括多種裝置類型并且不限于任何特定類型的裝置。

例如,客戶端計算裝置130、132、134還可包括但不限于:計算機導航類型客戶端計算裝置,諸如基于衛(wèi)星的導航系統(tǒng)(包括全球定位系統(tǒng)(gps)裝置)和其他基于衛(wèi)星的導航系統(tǒng)裝置;電信裝置,諸如移動電話、平板計算機、移動電話平板混合裝置、個人數據助理(pda)、膝上型計算機、其他移動計算機、可穿戴式計算機、植入式計算裝置、臺式計算機、個人計算機、汽車計算機、網絡使能的電視、瘦客戶端、終端、游戲控制臺、游戲裝置、工作站、媒體播放器、個人錄像機(pvr)、電視機頂盒、數字錄像機(dvr)、攝像機、用于包括在計算裝置中的集成部件、用具或被配置來接收用戶輸入的任意其他類型的計算裝置。

此外,實體(諸如用戶)可與客戶端計算裝置130、132、134中的每一個或任一個相關聯。所述實體可包括特定用戶和一個或多個用戶指定者(諸如用戶助理、用戶監(jiān)管者、用戶的配偶、用戶的父母和/或用戶授予其許可訪問客戶端計算裝置130、132、134的另一個實體)。

圖1還示出關于第n客戶端計算裝置134的細節(jié)。應理解,第一客戶端計算裝置130和第二客戶端計算裝置132可以與第n客戶端計算裝置134相同的方式配置并且可結合第n客戶端計算裝置134包括本文所描述的部件中的全部或任意的組合。

如所描繪,第n客戶端計算裝置134可以是任意計算裝置,并且第n客戶端計算裝置134可包括例如通過總線144可操作地或電連接到計算機可讀介質142的一個或多個處理單元140??偩€144可包括系統(tǒng)總線、數據總線、地址總線、pci總線、迷你pci總線和任何各種本地、外圍和/或獨立總線中的一個或多個。

第n客戶端計算裝置134還可包括一個或多個網絡接口146以能夠通過網絡102在第n客戶端計算裝置134與其他計算資源或裝置之間通信。網絡接口146可包括一個或多個網絡接口控制器(nic)或其他類型的收發(fā)器裝置以通過網絡發(fā)送和接收通信。在特定方面,可執(zhí)行指令可存儲在第n客戶端計算裝置134的計算機可讀介質142上,并且如圖1所示那些指令可例如包括操作系統(tǒng)148、本地共享文件夾和文件同步模塊150以及可由一個或多個處理單元140加載和執(zhí)行的其他模塊、程序或應用。

可替代地或此外,本文所描述的功能性可至少部分地由一個或多個硬件邏輯部件(諸如加速器)執(zhí)行。例如而非進行限制,可使用的說明性類型的硬件邏輯部件包括現場可編程門陣列(fpga)、專用集成電路(asic)、專用標準產品(assp)、片上系統(tǒng)的系統(tǒng)(soc)、復雜可編程邏輯裝置(cpld)等。例如,加速器可表示混合裝置,諸如來自zylex或altera的包括嵌入fpga架構的cpu核心的混合裝置。

第n客戶端計算裝置134的計算機可讀介質142還可包括本地文件系統(tǒng)152或被劃分成具有本地文件系統(tǒng)152,在所述本地文件系統(tǒng)152中可存儲多個文件夾、子文件夾、文件或其組合。多個文件夾、子文件夾和文件可包括多個共享文件夾、共享子文件夾、共享文件、共享子級文件和共享快捷方式。更具體地,多個共享文件夾、共享子文件夾、共享文件、共享子級文件和共享快捷方式可包括多個共享文件夾的本地實例、多個共享子文件夾的本地實例和多個共享文件的本地實例。

在特定方面,本地文件系統(tǒng)152可利用密碼散列函數或其他散列函數以存儲和檢索存儲在本地文件系統(tǒng)152內的文件和數據。所述散列函數可包括散列函數的衍生物,諸如md2、md4、md5、md6、sha-0、sha-1、sha-2、sha-3或其組合。在另一方面,散列函數可包括原始完整性校驗消息摘要(ripemd)散列函數、ripemd-160或其組合。在下文所描述的圖2和圖3提供關于可在本地文件系統(tǒng)152內找到的示例性文件系統(tǒng)和示例性文件夾的更多細節(jié)。

如圖1中進一步所示出,計算機可讀介質142可包括存儲在其上的主散列列表154。如本文所述的主散列列表154可包括文件夾散列、子文件夾散列和文件散列的列表并且可用來與之比較文件夾散列、子文件夾散列和文件散列的當前狀態(tài),以便確定自最后的主散列列表被計算和記錄以來,文件夾、子文件夾和/或文件內的內容是否已經改變。

主散列列表154可以是存儲在第n分布式計算資源108內的主散列列表124的副本。有時,主散列列表124、154可以相同。然而,當文件夾、子文件夾、文件或其組合在各種客戶端計算裝置130、132、134處被更改時,主散列列表124、154可在彼此同步之前不同。

仍參考圖1,第n客戶端計算裝置134還可包括連接到其的輸入裝置160、輸出裝置162、顯示裝置164或其組合。具體地,輸入裝置160、輸出裝置162和顯示裝置164可連接到總線144。輸入裝置160、輸出裝置162和顯示裝置164可提供給用戶與第n客戶端計算裝置134通信的能力。輸入裝置160可包括鼠標、鍵盤、麥克風、觸摸屏、操縱桿、手持控制器、光筆、軌跡球、掃描器、圖形板、磁性墨水讀卡器(micr)、光學字符閱讀器(ocr)、條碼閱讀器、光學標記閱讀器或其組合。輸出裝置162可包括打印機、揚聲器、觸覺裝置或其組合。顯示裝置164可包括屏幕、監(jiān)視器、投影儀或其組合。

圖1還指示共享文件夾和文件同步系統(tǒng)100可包括連接到第n客戶端計算裝置134的數據存儲區(qū)166。應理解,在替代性方面,共享文件夾和文件本地同步模塊150、本地文件系統(tǒng)152、主散列列表154或其組合可位于數據存儲區(qū)166內。在各方面和各種實例中,數據存儲區(qū)166包括數據存儲裝置,諸如數據庫、數據倉庫或其他類型的結構化或非結構化數據存儲裝置。在一些實例中,數據存儲區(qū)166可包括具有一個或多個表、指針、存儲過程(procedure)等的語料庫和/或關系數據庫以使數據訪問能夠包括例如超文本標記語言(html)表、資源描述框架(rdf)表、web本體語言(owl)表和/或可擴展標記語言(xml)表中的一個或多個。

計算機可讀介質可包括計算機存儲介質和/或通信介質。計算機存儲介質可包括在任何方法或技術中實現的易失性存儲器、非易失性存儲器和/或其他永久性和/或輔助性計算機存儲介質、可移動和不可移動計算機存儲介質,用以存儲信息諸如計算機可讀指令、數據結構、程序模塊或其他數據。計算機可讀介質112、142可以是類似于數據存儲區(qū)166的計算機存儲介質的實例。

因此,計算機可讀介質112、142和/或數據存儲區(qū)166包括有形和/或物理形式的介質,其被包括在裝置和/或為裝置的一部分或在裝置外部的硬件部件中,所述有形和/或物理形式的介質包括但不限于:隨機存取存儲器(ram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、相變存儲器(pram)、只讀存儲器(rom)、掩模只讀存儲器(mrom)、可編程只讀存儲器(prom)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、閃存存儲器、致密盤只讀存儲器(cd-rom)、數字多功能光盤(dvd)、光學卡或其他光學存儲介質、磁帶盒、磁帶、磁盤存儲裝置、磁卡或其他磁性存儲裝置或介質、固態(tài)存儲器裝置、存儲陣列、網絡附接的存儲裝置、存儲區(qū)域網絡、托管式計算機存儲裝置或可用來存儲和保持信息以用于由計算裝置訪問的任何其他存儲存儲器、存儲裝置和/或存儲介質。

與計算機存儲介質相反,通信介質可體現已調制數據信號(諸如載波或其他傳輸機制)中的計算機可讀指令、數據結構、程序模塊或其他數據。如本文中所定義,計算機存儲介質并不包括通信介質。也就是說,計算機存儲介質并不包括僅由已調制數據信號、載波或傳播信號本身組成的通信介質。

為了簡單起見,可通常與計算裝置(諸如第n客戶端計算裝置134)相關聯或隨所述計算裝置包括的其他部件或特征從圖1的第n客戶端計算裝置134的描繪中省略。這些其他部件或特征可包括但不限于a/c電源、d/c電源、各種連接器端口、各種線、各種led指示器、外殼、底盤、風扇、散熱器等。

計算機可讀存儲介質112、142和/或數據存儲區(qū)166可用來存儲可由所述一個或多個處理單元110、140執(zhí)行的任意數量的功能部件。在許多實現中,這些功能部件包括指令或程序,所述指令或程序可由所述一個或多個處理單元110、140執(zhí)行并且在執(zhí)行時實現操作邏輯以用于執(zhí)行歸結于共享文件夾和文件同步系統(tǒng)100的操作。共享文件夾和文件同步系統(tǒng)100的可在一個或多個處理單元110、140上執(zhí)行以用于實現與如本文所述使共享文件夾和文件同步有關的各種功能和特征的功能部件包括處于第n分布式計算資源108內的遠程共享文件夾和文件同步模塊120和處于第n客戶端計算裝置134內的本地共享文件夾和文件同步模塊150。

在實現中,各種模塊120、150可包括可由處理單元110、140執(zhí)行以執(zhí)行與使共享文件夾和文件在若干客戶端計算裝置130、132、134和至少一個分布式計算資源104、106、108中同步有關的操作的計算機可讀指令。

現參考圖2,文件系統(tǒng)的實例被示出并且通常由200指代。在圖2中示出的文件系統(tǒng)200可作為第n分布式計算資源108(圖1)內的遠程文件系統(tǒng)122(圖1)使用。此外,在圖2中示出的文件系統(tǒng)200可在第n分布式計算資源134(圖1)內的本地文件系統(tǒng)152(圖1)處使用。在另一方面,文件系統(tǒng)200可位于耦接到第n客戶端計算裝置134(圖1)的數據存儲區(qū)166(圖1)內。

如圖2中所示出,文件系統(tǒng)200可包括第一文件夾202、第二文件夾204和第n文件夾206。每個文件夾202、204、206可包括名稱、標識符或其他描述符,例如,我的文檔、照片、音樂、工作等。此外,如圖2中所指示,第一文件夾202可包括第一子文件夾210、第二子文件夾212和第n子文件夾214。每個子文件夾210、212、214可包括名稱、標識符或某一其他描述符。

第一文件夾202內的第一子文件夾210可包括第一文件216、第二文件218和第n文件220。第一文件夾202內的第二子文件夾212可包括第一文件222、第二文件224和第n文件226。此外,第一文件夾202內的第三子文件夾214可包括第一文件228、第二文件230和第n文件232。

每個文件216-232可包括歸檔文件、壓縮文件、計算機輔助設計文件、數據庫文件、桌面排版文件、文檔文件、財務記錄文件、字體文件、地理信息系統(tǒng)文件、圖形文件、鏈接文件、快捷方式文件、數學文件、對象代碼文件、頁面描述語言文件、個人信息管理器文件、演示文件、項目管理軟件文件、文獻管理軟件文件、科學數據文件、保密文件、信號數據(非音頻)文件、聲音(音頻)文件、源代碼文件、電子表格文件、表列數據文件、視頻文件、視頻游戲文件、虛擬機文件、網頁文件、某一其他文件或其組合。

如圖2中所示,文件系統(tǒng)200內的第一文件夾202還可包括子級一(1)文件234(又叫作第一子級文件)、子級二(2)文件236(又叫作第二子級文件)和子級n文件238(又叫作第n子級文件)。

第二文件夾204可包括第一子文件夾240、第二子文件夾242和第n子文件夾244。每個子文件夾240、242、244可包括名稱、標識符或某一其他描述符。第二文件夾204內的第一子文件夾240可包括第一文件246、第二文件248和第n文件250。第二文件夾204內的第二子文件夾242可包括第一文件252、第二文件254和第n文件256。此外,第二文件夾204內的第三子文件夾244可包括第一文件258、第二文件260和第n文件262。

每個文件246-262可包括歸檔文件、壓縮文件、計算機輔助設計文件、數據庫文件、桌面排版文件、文檔文件、財務記錄文件、字體文件、地理信息系統(tǒng)文件、圖形文件、鏈接文件、快捷方式文件、數學文件、對象代碼文件、頁面描述語言文件、個人信息管理器文件、演示文件、項目管理軟件文件、文獻管理軟件文件、科學數據文件、保密文件、信號數據(非音頻)文件、聲音(音頻)文件、源代碼文件、電子表格文件、表列數據文件、視頻文件、視頻游戲文件、虛擬機文件、網頁文件、某一其他文件或其組合。

如圖2中所指示,文件系統(tǒng)200內的第二文件夾204還可包括子級一(1)文件264(又叫作第一子級文件)、子級二(2)文件266(又叫作第二子級文件)和子級n文件268(又叫作第n子級文件)。

此外,如所示出,第三文件夾206可包括第一子文件夾270、第二子文件夾272和第n子文件夾274。每個子文件夾270、272、274可包括名稱、標識符或某一其他描述符。第三文件夾206內的第一子文件夾270可包括第一文件276、第二文件278和第n文件280。第三文件夾206內的第二子文件夾272可包括第一文件282、第二文件284和第n文件286。此外,第三文件夾206內的第三子文件夾274可包括第一文件288、第二文件290和第n文件292。

每個文件276-292可包括歸檔文件、壓縮文件、計算機輔助設計文件、數據庫文件、桌面排版文件、文檔文件、財務記錄文件、字體文件、地理信息系統(tǒng)文件、圖形文件、鏈接文件、快捷方式文件、數學文件、對象代碼文件、頁面描述語言文件、個人信息管理器文件、演示文件、項目管理軟件文件、文獻管理軟件文件、科學數據文件、保密文件、信號數據(非音頻)文件、聲音(音頻)文件、源代碼文件、電子表格文件、表列數據文件、視頻文件、視頻游戲文件、虛擬機文件、網頁文件、某一其他文件或其組合。

圖2中還示出文件系統(tǒng)200內的第n文件夾206可包括子級一(1)文件294(又叫作第一子級文件)、子級二(2)文件296(又叫作第二子級文件)和子級n文件298(又叫作第n子級文件)。

圖3示出由300指代的文件夾的實例。文件夾300可與結合圖1描述的文件系統(tǒng)122、152和結合圖2描述的文件系統(tǒng)200一起使用。此外,文件夾300可以是圖2中示出的文件夾202、204、206中的任一個的表示。

如圖3中所描繪,文件夾300可包括子文件夾302,并且子文件夾302可包括第一文件304、第二文件306和第n文件308。文件夾300還可包括子級1文件310(又叫作第一子級文件)、子級2文件312(又叫作第二子級文件)和子級n文件314(又叫作第n子級文件)。每個文件304-312可包括歸檔文件、壓縮文件、計算機輔助設計文件、數據庫文件、桌面排版文件、文檔文件、財務記錄文件、字體文件、地理信息系統(tǒng)文件、圖形文件、鏈接文件、快捷方式文件、數學文件、對象代碼文件、頁面描述語言文件、個人信息管理器文件、演示文件、項目管理軟件文件、文獻管理軟件文件、科學數據文件、保密文件、信號數據(非音頻)文件、聲音(音頻)文件、源代碼文件、電子表格文件、表列數據文件、視頻文件、視頻游戲文件、虛擬機文件、網頁文件、某一其他文件或其組合。

圖3還示出文件夾300可包括第一快捷方式316、第二快捷方式318和第n快捷方式320。每個快捷方式316、318、320可以是符號鏈接,即,符號鏈或軟鏈接。此外,每個快捷方式316、318、320可包括呈絕對或相對路徑形式的對另一個文件或目錄的引用。

如圖3中所指示,文件夾300可包括文件夾散列330并且文件夾散列330可以是文件夾300存儲在計算機可讀介質的文件系統(tǒng)內的位置的指示。子文件夾302可包括子文件夾散列332,所述子文件夾散列332可以是子文件夾302存儲在計算機可讀介質的文件系統(tǒng)內的位置的指示。此外,子文件夾302內的每個文件304、306、308可包括對應的文件散列334、336、338。例如,第一文件304可包括第一文件散列334,第二文件306可包括第二文件散列336,并且第n文件308可包括第n文件散列338。每個文件散列334、336、338可指示每個文件304、306、308存儲在計算機可讀介質的文件系統(tǒng)內的位置。

圖3還示出子級1文件310可包括相關聯的文件散列340,子級2文件312可包括相關聯的文件散列342,并且子級n文件314還可包括文件散列344。每個文件散列340、342、344可指示每個文件310、312、314存儲在計算機可讀介質的文件系統(tǒng)內的位置。第一快捷方式316可包括快捷方式散列346,第二快捷方式318可包括快捷方式散列348,并且第n快捷方式320還可包括快捷方式散列350。每個快捷方式散列346、348、350可指示每個快捷方式316、318、320存儲在計算機可讀介質的文件系統(tǒng)內的位置。

在特定實例中,子文件夾散列332可以是與存儲在子文件夾302中的文件304、306、308相關聯的文件散列334、336、338的函數。換句話講,子文件夾散列332可基于與存儲在子文件夾302內的文件304、306、308相關聯的文件散列334、336、338而被計算。文件散列334、336、338中的任一個的任何變化將導致新的子文件夾散列332。

文件夾散列330可以是與存儲在文件夾內的子文件夾302相關聯的子文件夾散列332、與存儲在子文件夾302內的文件304、306、308相關聯的文件散列334、336、338、與存儲在文件夾300內的子級文件310、312、314相關聯的子級文件散列340、342、344以及與存儲在文件夾300內的快捷方式316、318、320相關聯的快捷方式散列346、348、350的函數。換句話講,文件夾散列330可基于與存儲在文件夾內的子文件夾302相關聯的子文件夾散列332、與存儲在子文件夾302內的文件304、306、308相關聯的文件散列334、336、338、與存儲在文件夾300內的子級文件310、312、314相關聯的子級文件散列340、342、344以及與存儲在文件夾300內的快捷方式316、318、320相關聯的快捷方式散列346、348、350而被計算。因此,子文件夾散列332、文件散列334、336、338、子級文件散列340、342、344以及快捷方式散列346、348、350中的任一個的任何變化將導致新的文件夾散列330。

因此,通過監(jiān)視被計算并且被分配給每個文件夾300、子文件夾302、文件304、306、308、子級文件310、312、314以及快捷方式316、318、320的散列330-350的狀態(tài),共享文件夾和文件同步系統(tǒng)100(圖1)(例如,遠程和本地共享文件夾和文件同步模塊120、150(圖1))可快速地查明哪些文件夾202-206、300、子文件夾210-214、240-244、270-274、302、文件216-232、246-262、276-288、304-308、子級文件234-238、264-268、294-298、310-314、快捷方式316-320或其組合已經被更改或已經使其中的數據經歷改變,而實際上無須監(jiān)視文件夾202-206、300、子文件夾210-214、240-244、270-274、302、文件216-232、246-262、276-288、304-308、子級文件234-238、264-268、294-298、310-314以及快捷方式316-320的內容。

例如,遠程共享文件夾和文件同步模塊120、150可將用于遠程或本地文件系統(tǒng)122、152的散列330-350的當前列表與散列的最近列表(例如,用于此特定遠程或本地文件系統(tǒng)122、152的主散列列表124、154)進行比較,以便確定哪些文件夾202-206、300、子文件夾210-214、240-244、270-274、302、文件216-232、246-262、276-288、304-308、子級文件234-238、264-268、294-298、310-314和快捷方式316-320可能需要被同步。如果散列330-350中沒有一個改變,那么對遠程或本地文件系統(tǒng)122、152將不執(zhí)行同步。

所述遠程或本地共享文件夾和文件同步模塊120、150可快速地遍歷當前文件夾散列330以確定文件夾散列330(如果有的話)中的哪一個與每個文件夾202-206、300的最近記錄的文件夾散列330不同。不同的任何文件夾散列330向遠程或本地共享文件夾和文件同步模塊120、150提供如下指示:文件夾202-206、300的子文件夾210-214、240-244、270-274、302內的文件216-232、246-262、276-288、304-308已經被更改(例如更新、編輯、刪除、創(chuàng)建等)。對于具有與主列表124、154上的文件夾散列330不同的文件夾散列330的任何文件夾202-206、300,遠程同步模塊120或本地同步模塊150可遍歷與存儲在文件夾202-206、300內的文件216-232、246-262、276-288、304-308相關聯的文件散列334-338以確定文件216-232、246-262、276-288、304-308(如果有的話)中的哪些已經被更改。此外,可遍歷子級文件散列340-344以便確定子級文件234-238、264-268、294-298、310-314中的哪些已經被更改、更新或以其他方式被改變。而且,可遍歷快捷方式散列346-350以便確定快捷方式316-320中的任一個是否已經被更改或改變。

此外,對于具有新的或不同的文件夾散列330的每個文件夾202-206、300,遠程或本地共享文件夾和文件同步模塊120、150可遍歷與文件夾202-206、300內的子文件夾210-214、240-244、270-274、302相關聯的子文件夾散列332,以便確定哪些子文件夾210-214、240-244、270-274、302(如果存在的話)包括已經被更改的文件216-232、246-262、276-292、304-308。然后,對于具有不同子文件夾散列332的任何子文件夾210-214、240-244、270-274、310,遠程同步模塊120或本地同步模塊150可遍歷與存儲在子文件夾210-214、240-244、270-274、310內的文件216-232、246-262、276-292、304-308相關聯的文件散列334-338,以便確定哪些文件216-232、246-262、276-292、304-308具有不同文件散列334-338。

包括不同文件散列334-338的任何文件216-232、246-262、276-292、304-308被認為已經被更改并且使該特定文件216-232、246-262、276-292、304-308同步以包括最近動作。動作可包括對文件220-236、250-266、280-296、304-308或文件220-236、250-266、280-296、304-308內容的更新、編輯、添加、刪除或任何其他改變。

圖4至圖9示出與使共享文件夾和文件同步相關聯的各種過程。例如,圖4示出將文件和主散列列表上傳到遠程文件系統(tǒng)的示例性過程的流程圖。圖5和圖6示出用于使共享文件夾和文件同步的示例性過程的流程圖。圖7示出用于使來自本地文件系統(tǒng)的文件同步的示例性過程的流程圖。圖8示出用于使來自遠程文件系統(tǒng)的文件同步的示例性過程的流程圖。此外,圖9示出用于遍歷文件夾樹和子文件夾樹以定位文件變化用于同步的示例性過程的流程圖。

過程以區(qū)塊集合形式在邏輯流程圖中示出,其表示一系列操作,所述一系列操作中的一些或全部可在硬件、軟件或其組合中實現。在軟件的上下文中,區(qū)塊表示存儲于一個或多個計算機可讀介質上的計算機可執(zhí)行指令,所述計算機可執(zhí)行指令在由一個或多個處理器執(zhí)行時,執(zhí)行所表述的操作??傮w上,計算機可執(zhí)行指令包括例行程序、程序、對象、部件、數據結構等,其執(zhí)行特定功能或實現特定抽象數據類型。所描述的操作的順序不應被解釋為限制。任意數量的所描述的區(qū)塊可以任意順序和/或并行于實現所述過程或替代性過程而被組合,并且并不是需要執(zhí)行所有區(qū)塊。出于論述目的,本文的過程參考在本文中的實例中描述的框架、架構和環(huán)境進行描述,盡管所述過程可在多種多樣的其他框架、架構或環(huán)境中實現。

各種過程的描述可包括某種過渡性語言和方向性語言,諸如“之后”、“接下來”、“然后”、“隨后”、“返回至”、“繼續(xù)至”、“前進至”等。這些單詞及其他類似單詞僅意圖通過所述過程的圖形說明來引導讀者并且并不意圖限制可執(zhí)行說明中描繪的過程步驟的順序。

另外,圖4至圖9中描繪的各種過程步驟中的一個或多個可由分布式計算資源104、106、108(圖1)或客戶端計算裝置130、132、134(圖1)中的一個或多個執(zhí)行,以便使存儲在其中或存儲在其可訪問的存儲器裝置中的共享文件夾和文件同步。具體地,圖4至圖9中描繪的各種過程步驟中的一個或多個可由分布式計算資源104、106、108(圖1)內的遠程共享文件夾和文件同步模塊120(圖1)、客戶端計算裝置130、132、134(圖1)內的本地共享文件夾和文件同步模塊150(圖1)或其組合執(zhí)行。

如上文所述,圖4示出將文件和主散列列表從本地文件系統(tǒng)上傳到遠程文件系統(tǒng)的由400指代的示例性過程的流程圖。開始于402處,過程400包括設定變量n=1。變量n可以是整數,其將充當計數器以允許過程遍歷單獨文件一次一個而無需重復任何文件。在404處,過程400可包括計算本地文件系統(tǒng)內的第n文件夾的文件夾散列??苫谟脕韺⑴c第n文件夾相關聯的數據映射給本地文件系統(tǒng)存儲于其上的存儲器或計算機可讀介質的散列表來計算或以其他方式確定第n文件夾的文件夾散列。第n文件夾的文件夾散列基于其中的每個子文件夾的子文件夾散列、第n文件夾內的每個文件的文件散列和位于第n文件夾內的子文件夾內的每個文件的文件散列。在特定方面,過程400可利用用來存儲和檢索與文件相關聯的數據的數據模型。過程400可利用遠程過程調用(rpc)來從與文件系統(tǒng)內的數據相關聯的散列表檢索文件夾散列。具體地,過程400可利用getrootfolderrpc或getrootfolderrpc的修改版本,以便從散列表檢索文件夾散列。

在406處,過程400可包括計算或以其他方式確定位于本地文件系統(tǒng)內的第n文件夾內的每個子文件夾的子文件夾散列??苫谟脕韺⑴c第n文件夾內的每個子文件夾相關聯的數據映射給本地文件系統(tǒng)存儲于其上的存儲器或計算機可讀介質的散列表來計算第n文件夾內的每個子文件夾的散列。第n文件夾內的每個子文件夾的散列基于位于第n文件夾內的子文件夾內的每個文件的散列。此外,在特定方面,過程400可利用遠程過程調用(rpc)來從與文件系統(tǒng)內的數據相關聯的散列表檢索子文件夾散列。具體地,過程400可利用getrootfolderrpc或getrootfolderrpc的修改版本,以便從散列表檢索子文件夾散列。

移動至408,過程400可包括計算第n文件夾內的每個文件的文件散列。這包括位于第n文件夾內的每個子文件夾內的每個文件。可基于用來將與第n文件夾內的每個文件相關聯的數據映射給本地文件系統(tǒng)存儲于其上的存儲器或計算機可讀介質的散列表來計算第n文件夾內的每個文件的散列。此外,在特定方面,過程400可利用遠程過程調用(rpc)來從與文件系統(tǒng)內的數據相關聯的散列表檢索每個文件的文件散列。具體地,過程400可利用getrootfolderrpc或getrootfolderrpc的修改版本,以便從散列表檢索每個文件的文件散列。

繼續(xù)至410,過程400可包括記錄本地文件系統(tǒng)上的第n文件夾的文件夾散列、子文件夾散列和文件散列??捎涗浀趎文件夾的文件夾散列、子文件夾散列和文件散列并且使其與用于第n文件夾的標識符、用于第n文件夾內的每個子文件夾的標識符以及用于第n文件夾內的每個文件的標識符相關聯。每個標識符可以是與第n文件夾、每個子文件夾和每個文件相關聯的名稱、標題或某一其他描述。在412處,過程400包括確定在文件系統(tǒng)中是否存在另一個文件夾。

如果在文件系統(tǒng)中存在另一個文件夾,那么過程400可前進至414并且過程400可包括使n的值增加一(1)。換句話講,n的值可通過向n的當前值添加一(1)(即,n=n+1)來重新計算。然后,過程400可返回至404并且過程400可執(zhí)行如本文所述的步驟404至410。在412處,如果過程400確定不存在剩余的文件夾,那么過程400可前進至416。

在416處,過程400可包括將上文檢索的散列值聚集到單一主散列報告或單一主散列列表中。所述主散列列表可包括每個文件夾的文件夾散列、每個文件夾內的每個子文件夾的子文件夾散列和每個子文件夾和文件夾內的每個文件的文件散列。所述主散列列表可被編譯為表并且可包括時間/日期戳和與本地文件系統(tǒng)相關聯的客戶端計算裝置的標識符。在418處,過程400可包括向遠程文件系統(tǒng)傳輸文件夾和文件夾的內容(例如,其中的子文件夾和文件)。例如,可通過網絡連接將文件夾和其中的內容上傳到分布式計算資源的遠程文件系統(tǒng)。然后,過程400可在420處結束。

圖5和圖6示出用于使共享文件夾和文件同步的示例性過程500的流程圖。開始于502,過程500可包括定期地輪詢或以其他方式確定在其中存儲共享文件夾、共享子文件夾、共享文件、共享子級文件和/或共享快捷方式的遠程實例的遠程文件系統(tǒng)的狀態(tài)。

遠程文件系統(tǒng)狀態(tài)可包括多個遠程文件夾散列值??芍辽俨糠值鼗谶h程文件系統(tǒng)處的與多個共享子文件夾的遠程實例相關聯的多個子文件夾散列、與多個共享文件的遠程實例相關聯的多個文件散列、與多個共享子文件的遠程實例相關聯的多個子文件散列、與多個共享快捷方式的遠程實例相關聯的多個快捷方式散列或其組合來確定多個遠程文件夾散列值。

此外,可將遠程文件系統(tǒng)的狀態(tài)組織為主散列列表或當前遠程文件系統(tǒng)散列列表。所述輪詢可由遠程文件系統(tǒng)處的共享文件夾和文件同步模塊發(fā)起并且可將結果傳輸至本地文件系統(tǒng)處的共享文件夾和文件同步模塊。相反,本地文件系統(tǒng)處的共享文件夾和文件同步模塊可向遠程文件系統(tǒng)處的共享文件夾和文件同步模塊傳輸針對與遠程文件系統(tǒng)處的共享文件夾和文件相關聯的散列的當前狀態(tài)的請求。響應于該請求,遠程文件系統(tǒng)處的共享文件夾和文件同步模塊可輪詢共享文件夾和文件的散列的狀態(tài)并且將輪詢結果傳輸給本地文件系統(tǒng)處的共享文件夾和文件同步模塊。本地文件系統(tǒng)處的共享文件夾和文件同步模塊可接收與遠程文件系統(tǒng)處的共享文件夾和文件相關聯的散列的當前狀態(tài)例如作為主散列列表。

在504處,過程500可包括將遠程文件系統(tǒng)的當前狀態(tài)與在本地文件系統(tǒng)處可用的資源或由本地文件系統(tǒng)處的同步模塊確定的本地文件系統(tǒng)的狀態(tài)進行比較。本地文件系統(tǒng)狀態(tài)可包括處于本地文件系統(tǒng)內的多個本地文件夾散列值??芍辽俨糠值鼗诒镜匚募到y(tǒng)處的與多個共享子文件夾的本地實例相關聯的多個子文件夾散列、與多個共享文件的本地實例相關聯的多個文件散列、與多個共享子文件的本地實例相關聯的多個子文件散列、與多個共享快捷方式的本地實例相關聯的多個快捷方式散列或其組合來確定多個本地文件夾散列值。

過程500可將遠程文件系統(tǒng)狀態(tài)和本地文件系統(tǒng)狀態(tài)進行比較以確定遠程文件系統(tǒng)狀態(tài)內的多個遠程文件夾散列值與本地文件系統(tǒng)狀態(tài)內的多個本地文件夾散列值的任何差異。在其中遠程文件夾散列值與本地文件夾散列值不同的任何共享文件夾可如本文所述在本地文件系統(tǒng)和遠程文件系統(tǒng)上同步。

具體地,本地文件系統(tǒng)處的共享文件夾和文件同步模塊可進行與共享文件夾和文件的本地版本相關聯的散列的輪詢以得到當前本地散列列表??蓪斍斑h程散列列表(例如,主散列列表)與先前的主散列列表進行比較。也可將當前本地散列列表與最近的先前記錄的本地散列列表進行比較。此外,可將當前本地散列列表與當前主散列列表進行比較來確定當前本地散列列表中的散列與當前主散列列表中的散列之間的任何差異。

在特定方面,過程500可包括確定特定共享文件是否包括不一致的文件散列配對。所述不一致的文件散列配對可包括特定共享文件的本地實例的本地文件散列,其與特定共享文件的遠程實例的遠程文件散列不同。此外,過程500可包括使特定共享文件與如下文所述的不一致的文件散列配對同步。在另一方面,不一致的文件散列配對可包括特定共享文件的本地實例的丟失的本地文件散列,或特定共享文件的遠程實例的丟失的遠程文件散列。在這種情況下,過程500可包括將特定共享文件的本地實例從本地文件系統(tǒng)刪除或將特定共享文件的遠程實例從遠程文件系統(tǒng)刪除。

移動至506,過程500可包括確定任何文件是否已經在本地改變。基于上文執(zhí)行的比較,在當前本地散列列表與最近先前記錄的本地散列列表之間的任何差異可指示文件已經由用戶在本地改變。此外,在當前本地散列列表與當前主散列列表之間的任何差異可指示文件已經被遠程地或在本地改變。與每個文件相關聯的時間戳可指示最近版本。具有最近時間戳的本地文件可被認為已經在本地改變。

具體地說,過程500可包括確定特定共享文件的本地實例的時間戳,確定特定共享文件的遠程實例的時間戳,以及使特定共享文件與特定共享文件的最近的本地實例和特定共享文件的最近的遠程實例同步。例如,過程500可包括將特定共享文件的本地實例上傳到遠程文件系統(tǒng)或將特定共享文件的遠程實例下載到本地文件系統(tǒng)。

在506處,如果任何文件已經在本地改變,那么過程500可前進至508并且過程500還可包括將文件上傳到遠程文件系統(tǒng)。在一方面,可將已經改變的整個文件上傳到遠程文件系統(tǒng)。在另一方面,為了節(jié)省上傳時間和存儲,共享文件夾和文件同步系統(tǒng)可解析來自文件的變化并且僅將所述變化上傳到遠程文件系統(tǒng)。在上傳之后,共享文件夾和文件同步系統(tǒng)可在遠程文件系統(tǒng)處利用變化更新文件。然后,過程500可移動至510。返回至506,如果不存在已經在本地改變的任何文件,那么過程500可直接移動至510。

在510處,過程500可包括確定任何文件夾、子文件夾、文件或其組合在遠程文件系統(tǒng)中是否已經被刪除。基于最近的主散列列表和當前主散列列表的比較,所述系統(tǒng)可確定任何文件夾散列、子文件夾散列或文件散列是否從當前主散列列表丟失。如果丟失,那么對應于當前主散列列表中的丟失的散列的那些文件夾、子文件夾、文件、子級文件或快捷方式被認為已經從遠程文件系統(tǒng)刪除。如果存在從遠程文件系統(tǒng)刪除的文件夾、子文件夾、文件、子級文件或快捷方式,那么過程500可移動至512。在512處,過程500可包括將對應的文件夾、子文件夾、文件、子級文件或快捷方式從本地文件系統(tǒng)刪除。在特定方面,可立即刪除文件夾、子文件夾、文件、子級文件或快捷方式。在另一方面,可使用延遲的刪除,并且可將文件夾、子文件夾、文件、子級文件或快捷方式置于刪除的文件夾或高速緩沖存儲器中預定時間段。在預定時間段期滿之后,可永久地刪除文件夾、子文件夾、文件、子級文件或快捷方式??蓪h除的文件夾或高速緩沖存儲器進行加密或解密。此外,可將刪除的文件夾或高速緩沖存儲器對用戶隱藏或不隱藏。

然后,過程500可繼續(xù)至514。返回至510,如果不存在從遠程文件系統(tǒng)刪除的任何文件夾、子文件夾、文件、子級文件或快捷方式,那么過程500可直接移動至514。

在514處,過程500可包括確定任何文件夾、子文件夾、文件或其組合在本地文件系統(tǒng)中是否已經被刪除。基于最近記錄的先前的本地散列列表和當前本地散列列表的比較,所述系統(tǒng)可確定任何文件夾散列、子文件夾散列或文件散列是否從當前本地散列列表丟失。如果丟失,那么對應于當前本地散列列表中的丟失的散列的那些文件夾、子文件夾、文件、子級文件或快捷方式被認為已經從本地文件系統(tǒng)刪除。如果存在從本地文件系統(tǒng)刪除的文件夾、子文件夾、文件、子級文件或快捷方式,那么過程500可移動至516。在516處,過程500可包括將對應的文件夾、子文件夾、文件、子級文件或快捷方式從遠程文件系統(tǒng)刪除。然后,過程500可繼續(xù)至圖6的602。返回至514,如果不存在從本地文件系統(tǒng)刪除的任何文件夾、子文件夾、文件、子級文件或快捷方式,那么過程500可直接移動至圖6的602。

在602處,過程500可包括確定任何文件是否已經被遠程地更新或以其他方式改變。此外,過程500可包括確定是否將任何新文件添加至遠程文件系統(tǒng)。基于上文執(zhí)行的比較,當與本地文件系統(tǒng)處的最近主列表進行比較時,當前遠程散列數據內的任何差異可指示文件已經由用戶在另一個客戶端計算裝置(例如,另一個本地文件系統(tǒng))處改變,并且那些改變在遠程文件系統(tǒng)處已經被改變但尚未在訪問遠程文件系統(tǒng)(包括當前本地文件系統(tǒng))的所有客戶端計算裝置上傳播。此外,在當前本地散列列表與當前主散列列表之間的任何差異可指示文件已經被遠程地或在本地改變。與每個文件相關聯的時間戳可指示最近版本。具有最近時間戳的遠程文件可被認為已經遠程地改變。如果在主文件列表內存在新的文件夾散列、子文件夾散列或文件散列,那么對應的文件夾、子文件夾、文件、子級文件或快捷方式將被認為是新的。

在602處,如果任何文件已經被遠程地更新或存在遠程存儲的新文件,那么過程500可前進至604并且過程500還可包括將更新的文件和新文件從遠程文件系統(tǒng)下載至本地文件系統(tǒng)。在一方面,可將已經更新或以其他方式改變的整個文件下載至本地文件系統(tǒng)。在另一方面,為了節(jié)省下載時間和存儲,共享文件夾和文件同步系統(tǒng)可解析來自文件的更新或變化并且僅將所述更新或變化下載至本地文件系統(tǒng)。在下載完成之后,共享文件夾和文件同步系統(tǒng)可在本地文件系統(tǒng)處利用更新或變化更新文件。然后,過程500可移動至606。返回至602,如果不存在遠程地更新的任何文件或在遠程文件系統(tǒng)處不存在任何新文件,那么過程500可直接移動至606。

在606處,過程500可包括確定對共享文件夾、子文件夾、文件、子級文件或快捷方式的任一的訪問許可是否對任何本地用戶改變。如果沒有,那么過程500可在608處結束。另一方面,如果訪問許可對任何本地用戶改變,那么過程500移動至610,在610處,過程500可包括確定特定本地用戶對特定共享文件夾、子文件夾、文件、子級文件或快捷方式的訪問是被授權還是被拒絕。如果特定本地用戶對特定共享文件夾、子文件夾、文件、子級文件或快捷方式的訪問被拒絕,那么過程500移動至612并且過程500可包括將特定文件夾、子文件夾、文件、子級文件或快捷方式從與被拒絕訪問特定文件夾、子文件夾、文件、子級文件或快捷方式的本地用戶相關聯的本地文件系統(tǒng)刪除。然后,過程500可在608處結束。

返回至610,如果將對特定共享文件夾、子文件夾、文件、子級文件或快捷方式的訪問授權給特定本地用戶,那么過程500移動至614并且過程500可包括將特定文件夾、子文件夾、文件、子級文件或快捷方式從遠程文件系統(tǒng)下載至與被授權訪問特定文件夾、子文件夾、文件、子級文件或快捷方式的本地用戶相關聯的本地文件系統(tǒng)。然后,過程500可在608處結束。

現參考圖7,用于使來自本地文件系統(tǒng)的文件同步的示例性過程的流程圖被示出并且通常由700指代。開始于702,過程700可包括進入do循環(huán),其中定期地執(zhí)行以下步驟。例如,在704處,過程700可包括設定變量n等于一(1)。變量n可以是整數,其將充當計數器以允許共享文件夾和文件同步系統(tǒng)遍歷單獨文件一次一個而無需重復任何文件夾。在706處,過程700可包括檢索本地文件系統(tǒng)的第n文件夾的當前散列。第n文件夾的當前散列可從與本地文件系統(tǒng)相關聯的用來映射存儲在本地文件系統(tǒng)內的數據的存儲器位置的散列表檢索。具體地說,第n文件夾的當前散列可使用getrootfolderrpc從本地文件系統(tǒng)散列表檢索。在另一方面,過程700可基于與存儲在第n文件夾內的任何子文件夾、文件、子級文件和/或快捷方式相關聯的子文件夾散列、文件散列、子級文件散列和/或快捷方式散列來重新計算第n文件夾的當前散列。過程700可重新計算當前散列并且使用該值來驗證所檢索值的準確性?;蛘?,代替從散列表檢索當前散列,過程700可包括如上文所述重新計算散列。

在檢索本地文件系統(tǒng)的第n文件夾的當前文件夾散列之后,過程700可前進至708。在708處,過程700可包括將本地文件系統(tǒng)的第n文件夾的當前文件夾散列與記錄在主散列列表中的第n文件夾的先前散列進行比較。在特定方面,所述比較可包括將第n文件夾的文件夾散列的實際值與存儲在主散列列表中的第n文件夾的文件夾散列的最近記錄值進行比較以確定第n文件夾的當前文件夾散列是否與第n文件夾的文件夾散列的最近記錄值不同。

在710處,過程700可包括確定第n文件夾的當前文件夾散列是否與第n文件夾的先前記錄的文件夾散列不同。在特定方面,第n文件夾的當前文件夾散列取決于第n文件夾內的子文件夾和第n文件夾內的文件(例如,第n文件夾內的任何子文件夾)。如果第n文件夾內的任何文件的內容改變,那么文件的文件散列改變并且響應于改變的文件散列,第n文件夾的文件夾散列也改變。此外,如果第n文件夾的子文件夾內的任何文件的內容改變,那么所述文件的文件散列改變并且所述子文件夾的子文件夾散列改變。而且,第n文件夾的文件夾散列改變。第n文件夾的新文件夾散列可指示第n文件夾內的一個文件或多個文件已經改變并且應相應地同步。

在710處,如果第n文件夾的當前文件夾散列不與第n文件夾的先前記錄的文件夾散列不同,那么過程700可移動至712。在712處,過程700可包括記錄如下指示:第n文件夾的文件夾散列并未改變或與第n文件夾的先前記錄的文件夾散列相同。此外,所述過程可包括記錄第n文件夾的內容與先前保存的內容相同并且并未被更新、改變、編輯或以其他方式更改的指示。過程700可記錄第n文件夾的文件夾散列和第n文件夾的內容在用于追蹤共享文件夾和文件的變化的文件中未改變的指示。

繼續(xù)至714,過程700可包括確定在本地文件系統(tǒng)中是否存在另一個文件夾。如果不存在,那么過程700可在716處結束。否則,如果在本地文件系統(tǒng)中存在另一個文件夾,那么過程700可前進至718。在718處,過程700可包括將n的值增加一(1)。換句話講,n的值可通過向n的當前值添加一(1)(即,n=n+1)來重新計算。然后,過程700可返回至706并且過程700可如上文所述繼續(xù)本地文件系統(tǒng)中的下一個文件夾。

返回至710,如果第n文件夾的當前文件夾散列與第n文件夾的先前記錄的文件夾散列不同,那么過程700可移動至720。在720處,過程700可包括將第n文件夾的當前文件夾散列記錄在主散列列表中。具體地,過程700可用第n文件夾的當前文件夾散列值改寫第n文件夾的先前文件夾散列值的主散列列表內的條目。可在改寫之前將第n文件夾的先前散列值記錄在追蹤的文件中。否則,先前的散列值可被丟棄。

移動至722,過程700可包括使本地文件系統(tǒng)的第n文件夾與遠程文件系統(tǒng)中的對應的第n文件夾同步。具體地,一旦本地文件系統(tǒng)的第n文件夾內已經改變的文件與遠程文件系統(tǒng)中的那些文件的對應的實例同步。過程700可通過遍歷與本地文件系統(tǒng)的第n文件夾相關聯的文件夾樹和子文件夾樹以確定哪些子文件夾散列和文件散列已經改變來快速地定位和確定哪些文件已經被更新或以其他方式被改變。

具體地,用于遍歷文件夾樹和子文件夾樹以定位文件變化用于同步的在下文結合圖9所描述的過程可由共享文件夾和文件同步系統(tǒng)使用,以快速地查明本地文件系統(tǒng)內的哪些文件夾、子文件夾、文件或其部分將要與遠程文件系統(tǒng)同步。一旦已經改變或更新的文件被定位,那些文件就在遠程文件系統(tǒng)中被同步。

然后,過程700可繼續(xù)至714并且過程700可包括確定本地文件系統(tǒng)是否包括另一個文件夾。如果不存在,那么過程700可在716處結束。否則,過程700可移動至718并且如上文所述繼續(xù)。

圖8示出用于使來自遠程文件系統(tǒng)的文件同步的示例性過程的流程圖,其通常用800指代。開始于802,過程800可包括進入do循環(huán),其中定期地執(zhí)行以下步驟。例如,在804處,過程800可包括設定變量n等于一(1)。變量n可以是整數,其將充當計數器以允許共享文件夾和文件同步系統(tǒng)遍歷單獨文件一次一個而無需重復任何文件夾。在806處,過程800可包括檢索遠程文件系統(tǒng)的第n文件夾的當前散列。第n文件夾的當前散列可從與遠程文件系統(tǒng)相關聯的用來映射存儲在遠程文件系統(tǒng)內的數據的存儲器位置的散列表檢索。具體地說,第n文件夾的當前散列可使用getrootfolderrpc從遠程文件系統(tǒng)散列表檢索。

在另一方面,過程800可包括基于與存儲在第n文件夾內的任何子文件夾、文件、子級文件和/或快捷方式相關聯的子文件夾散列、文件散列、子級文件散列和/或快捷方式散列來重新計算第n文件夾的當前散列。過程800可重新計算當前散列并且使用該值來驗證所檢索值的準確性?;蛘?,代替從散列表檢索當前散列,過程800可包括如上文所述重新計算散列。

在檢索遠程文件系統(tǒng)的第n文件夾的當前文件夾散列之后,過程800可前進至808。在808處,過程800可包括將遠程文件系統(tǒng)的第n文件夾的當前文件夾散列與記錄在主散列列表中的第n文件夾的先前散列進行比較。在特定方面,所述比較可包括將第n文件夾的文件夾散列的實際值與存儲在主散列列表中的第n文件夾的文件夾散列的最近記錄值進行比較以確定第n文件夾的當前文件夾散列是否與第n文件夾的文件夾散列的最近記錄值不同。

在810處,過程800可包括確定第n文件夾的當前文件夾散列是否與第n文件夾的先前記錄的文件夾散列不同。在特定方面,第n文件夾的當前文件夾散列取決于第n文件夾內的子文件夾和第n文件夾內的文件(例如,第n文件夾內的任何子文件夾)。如果第n文件夾內的任何文件的內容改變,那么文件的文件散列改變并且響應于改變的文件散列,第n文件夾的文件夾散列也改變。此外,如果第n文件夾的子文件夾內的任何文件的內容改變,那么所述文件的文件散列改變并且所述子文件夾的子文件夾散列改變。而且,第n文件夾的文件夾散列改變。第n文件夾的新文件夾散列可指示第n文件夾內的一個文件或多個文件已經改變并且應相應地同步。

在810處,如果第n文件夾的當前文件夾散列不與第n文件夾的先前記錄的文件夾散列不同,那么過程800可移動至812。在812處,過程800可包括記錄如下指示:第n文件夾的文件夾散列并未改變或與第n文件夾的先前記錄的文件夾散列相同。此外,所述過程可包括記錄第n文件夾的內容與先前保存的內容相同并且并未被更新、改變、編輯或以其他方式更改的指示。過程800可記錄第n文件夾的文件夾散列和第n文件夾的內容在用于追蹤共享文件夾和文件的變化的文件中未改變的指示。

繼續(xù)至814,過程800可包括確定在遠程文件系統(tǒng)中是否存在另一個文件夾。如果不存在,那么過程800可在816處結束。否則,如果在遠程文件系統(tǒng)中存在另一個文件夾,那么過程800可前進至818。在818處,過程800可包括將n的值增加一(1)。換句話講,n的值可通過向n的當前值添加一(1)(即,n=n+1)來重新計算。然后,過程800可返回至806并且過程800可如上文所述繼續(xù)遠程文件系統(tǒng)中的下一個文件夾。

返回至810,如果第n文件夾的當前文件夾散列與第n文件夾的先前記錄的文件夾散列不同,那么過程800可移動至820。在820處,過程800可包括將第n文件夾的當前文件夾散列記錄在主散列列表中。具體地,過程800可用第n文件夾的當前文件夾散列值改寫第n文件夾的先前文件夾散列值的主散列列表內的條目。可在改寫之前將第n文件夾的先前散列值記錄在追蹤的文件中。否則,先前的散列值可被丟棄。

移動至822,過程800可包括使遠程文件系統(tǒng)的第n文件夾與同特定共享文件夾和文件同步系統(tǒng)相關聯的每個本地文件系統(tǒng)中對應的第n文件夾同步,所述特定共享文件夾和文件同步系統(tǒng)訪問遠程文件系統(tǒng)和其中的文件夾和文件。具體地,一旦遠程文件系統(tǒng)的第n文件夾內的已經改變的文件與本地文件系統(tǒng)中的那些文件的對應的實例同步。過程800可通過遍歷與遠程文件系統(tǒng)的第n文件夾相關聯的文件夾樹和子文件夾樹以確定哪些子文件夾散列和文件散列已經改變來快速地定位和確定哪些文件已經被更新或以其他方式被改變。

具體地,用于遍歷文件夾樹和子文件夾樹以定位文件變化用于同步在下文結合圖9所描述的的過程可由共享文件夾和文件同步系統(tǒng)使用,以快速地查明遠程文件系統(tǒng)內的哪些文件夾、子文件夾、文件或其部分將要與本地文件系統(tǒng)同步。一旦已經改變或更新的文件被定位,那些文件就在本地文件系統(tǒng)中被同步。

現參考圖9,用于遍歷文件夾樹和子文件夾樹以定位文件變化用于同步的示例性過程的流程圖被示出并且由900指代。如圖9所示,過程900可在902處以do循環(huán)開始,其中當新文件夾被識別時,可執(zhí)行以下步驟中的一個或多個。例如,在904處,過程900可包括設定變量n等于一(1)。變量n可以是整數,其將充當計數器以允許共享文件夾和文件同步系統(tǒng)遍歷單獨子文件夾一次一個而無需重復任何子文件夾。

在906處,過程900可包括檢索位于被識別為具有新文件夾散列的文件夾內的第n子文件夾的當前散列。第n子文件夾的當前子文件夾散列可從與本地文件系統(tǒng)或遠程文件系統(tǒng)相關聯的用來映射存儲在特定文件系統(tǒng)內的數據的存儲器位置的散列表檢索。在一個方面,第n子文件夾的當前散列可使用getrootfolderrpc從特定文件系統(tǒng)散列表檢索。

在檢索文件系統(tǒng)的第n子文件夾的當前子文件夾散列之后,過程900可前進至908。在908處,過程900可包括將文件系統(tǒng)的第n子文件夾的當前子文件夾散列與記錄在主散列列表、當前本地散列列表、當前遠程散列列表或其組合中的第n子文件夾的先前子文件夾散列進行比較。在特定方面,所述比較可包括將第n子文件夾的子文件夾散列的實際值與存儲在特定散列列表中的第n子文件夾的子文件夾散列的最近記錄值進行比較以確定第n子文件夾的當前子文件夾散列是否與第n子文件夾的子文件夾散列的最近記錄值不同。

在910處,過程900可包括確定第n子文件夾的當前子文件夾散列是否與第n子文件夾的先前記錄的子文件夾散列不同。在特定方面,第n子文件夾的當前子文件夾散列取決于第n子文件夾內的文件。如果第n子文件夾內的任何文件的內容改變,那么所述文件的文件散列改變并且所述第n子文件夾的子文件夾散列也改變。第n子文件夾的新子文件夾散列可指示第n子文件夾內的一個文件或多個文件已經改變并且應相應地同步。

在910處,如果第n子文件夾的當前子文件夾散列不與第n子文件夾的先前記錄的子文件夾散列不同,那么過程900可移動至912。在912處,過程900可包括使子文件夾內的具有新文件散列的每個文件同步。然后,過程900可移動至914,在914處過程可包括確定在被識別具有新文件夾散列的文件夾中是否存在另一個子文件夾。如果存在另一個子文件夾,那么過程900可移動至916。在916處,過程900可包括將n的值增加一(1)。換句話講,n的值可通過向n的當前值添加一(1)(即,n=n+1)來重新計算。然后,過程900可返回至906并且過程900可如上文所述繼續(xù)被識別為在文件系統(tǒng)內具有新文件夾散列的文件夾中的下一個子文件夾。

返回914,如果在特定文件夾被識別為具有新文件夾散列的情況下不存在另一個子文件夾,那么過程900可繼續(xù)至918。在918處,過程900可包括確定文件系統(tǒng)是否包括另一個文件夾,所述另一個文件夾包括新散列。如果文件系統(tǒng)不包括具有新散列的另一個文件夾,那么過程900可返回至904并且可如本文所述繼續(xù)進行。否則,在918處,如果文件系統(tǒng)不具有含新散列的另一個文件夾,那么過程900可在920處結束。

圖9示出用于遍歷文件夾樹和子樹一次一個(即,當n從1增加至n的最終值時按順序進行)的示例性過程900。應理解,在利用多個處理器、多核處理器、多線程處理、交織的多線程處理、共享處理或其任意組合的現代計算系統(tǒng)的情況下,可同時、或基本同時、彼此并行地遍歷多個文件夾樹和子樹。

可鑒于以下條款對本公開的實施方案進行描述:

1.一種方法,其包括:

確定遠程文件系統(tǒng)狀態(tài),其中所述遠程文件系統(tǒng)狀態(tài)包括遠程文件夾散列值,并且其中至少部分地基于所述遠程文件系統(tǒng)處的與共享子文件夾的遠程實例相關聯的子文件夾散列、與共享文件的遠程實例相關聯的文件散列、與共享子文件的遠程實例相關聯的子文件散列、與共享快捷方式的遠程實例相關聯的快捷方式散列或其組合確定所述遠程文件夾散列值;

確定本地文件系統(tǒng)狀態(tài),其中所述本地文件系統(tǒng)狀態(tài)包括本地文件夾散列值,并且其中至少部分地基于所述本地文件系統(tǒng)處的與共享子文件夾的本地實例相關聯的子文件夾散列、與共享文件的本地實例相關聯的文件散列、與共享子文件的本地實例相關聯的子文件散列、與共享快捷方式的本地實例相關聯的快捷方式散列或其組合確定所述本地文件夾散列值;

將所述遠程文件系統(tǒng)狀態(tài)和所述本地文件系統(tǒng)狀態(tài)進行比較以確定所述遠程文件系統(tǒng)狀態(tài)內的所述遠程文件夾散列值與所述本地文件系統(tǒng)狀態(tài)內的所述本地文件夾散列值的任何差異;以及

使所述本地文件系統(tǒng)和所述遠程文件系統(tǒng)內的任何共享文件夾的至少一部分同步,其中所述遠程文件夾散列值與所述本地文件夾散列值不同。

2.如條款1所述的方法,其還包括:

確定特定共享文件是否包括不一致的文件散列配對。

3.如條款2所述的方法,其中所述不一致的文件散列配對包括所述特定共享文件的本地實例的本地文件散列,其與所述特定共享文件的遠程實例的遠程文件散列不同。

4.如條款2所述的方法,其還包括:

使所述特定共享文件與所述不一致的文件散列配對同步。

5.如條款4所述的方法,其還包括:

確定用于所述特定共享文件的所述本地實例的時間戳;

確定用于所述特定共享文件的所述遠程實例的時間戳;以及

使所述特定共享文件與所述特定共享文件的最近的所述本地實例和所述特定共享文件的最近的所述遠程實例同步。

6.如條款5所述的方法,其還包括:

將所述特定共享文件的所述本地實例上傳到所述遠程文件系統(tǒng)。

7.如條款5所述的方法,其還包括:

將所述特定共享文件的所述遠程實例下載至所述本地文件系統(tǒng)。

8.如條款2所述的方法,其中所述不一致的文件散列配對包括所述特定共享文件的本地實例的丟失的本地文件散列或所述特定共享文件的遠程實例的丟失的遠程文件散列。

9.如條款8所述的方法,其還包括:

將所述特定共享文件的所述本地實例從所述本地文件系統(tǒng)刪除。

10.如條款8所述的方法,其還包括:

將所述特定共享文件的所述遠程實例從所述遠程文件系統(tǒng)刪除。

11.一種方法,其包括:

確定遠程文件系統(tǒng)狀態(tài);

確定本地文件系統(tǒng)狀態(tài);

將所述遠程文件系統(tǒng)狀態(tài)和所述本地文件系統(tǒng)狀態(tài)進行比較來確定共享文件夾的遠程實例、共享子文件夾的遠程實例或共享文件的遠程實例是否包括與所述共享文件夾的對應的本地實例、共享子文件夾的對應的本地實例或所述共享文件的對應的本地實例的本地文件系統(tǒng)屬性不同的遠程文件系統(tǒng)屬性;以及

使所述共享文件夾、所述共享子文件夾或所述共享文件同步,其中所述遠程文件系統(tǒng)屬性與所述本地文件系統(tǒng)屬性不同。

12.如條款11所述的方法,其中所述遠程文件系統(tǒng)屬性包括被分配給所述共享文件夾的所述遠程實例的遠程文件夾值、被分配給所述共享子文件夾的所述遠程實例的遠程子文件夾值或被分配給所述共享文件的所述遠程實例的遠程文件值。

13.如條款12所述的方法,其中所述遠程文件夾值包括遠程文件夾散列,所述遠程子文件夾值包括遠程子文件夾散列,并且所述遠程文件值包括遠程文件散列。

14.如條款13所述的方法,其中基于所述遠程文件系統(tǒng)的遠程散列表來確定所述遠程文件夾散列、所述遠程子文件夾散列和所述遠程文件散列。

15.如條款11所述的方法,其中所述本地文件系統(tǒng)屬性包括被分配給所述共享文件夾的所述本地實例的本地文件夾值、被分配給所述共享子文件夾的所述本地實例的本地子文件夾值或被分配給所述共享文件的所述本地實例的本地文件值。

16.如條款15所述的方法,其中所述本地文件夾值包括本地文件夾散列,所述本地子文件夾值包括本地子文件夾散列,并且所述本地文件值包括本地文件散列。

17.如條款16所述的方法,其中基于所述本地文件系統(tǒng)的本地散列表來確定所述本地文件夾散列、所述本地子文件夾散列和所述本地文件散列。

18.一種共享文件夾和文件同步系統(tǒng),其包括:

一個或多個計算機可讀介質,所述一個或多個計算機可讀介質上面具有同步模塊和文件系統(tǒng);

可操作地耦接到所述計算機可讀介質的處理單元,所述處理單元適于執(zhí)行所述同步模塊,其中所述同步模塊被配置來:

確定與遠程文件系統(tǒng)內的共享數據結構的遠程實例相關聯的遠程文件系統(tǒng)屬性;

確定與本地文件系統(tǒng)內的共享數據結構的本地實例相關聯的本地文件系統(tǒng)屬性;

確定所述遠程文件系統(tǒng)屬性是否與所述本地文件系統(tǒng)屬性不同;以及

使所述遠程文件系統(tǒng)內的所述共享數據結構的所述遠程實例選擇性地與所述本地文件系統(tǒng)內的所述共享數據結構的所述本地實例同步,使得所述共享數據結構內的內容在所述遠程文件系統(tǒng)和所述本地文件系統(tǒng)處相同。

19.如條款18所述的系統(tǒng),其中所述共享數據結構包括共享文件夾、共享子文件夾、共享文件或其組合。

20.如條款18所述的系統(tǒng),其中所述遠程文件系統(tǒng)屬性包括從與所述遠程文件系統(tǒng)相關聯的遠程散列表檢索的遠程文件夾散列、遠程子文件夾散列或遠程文件散列,并且其中所述本地文件系統(tǒng)屬性包括從與所述本地文件系統(tǒng)相關聯的本地散列表檢索的本地文件夾散列、本地子文件夾散列或本地文件散列。

結論

盡管已用特定于結構特征和/或方法動作的語言描述所述技術,但將理解,隨附的權利要求書不必限于所描述的特征或動作。相反,所述特征和動作作為這類技術的示例性實現來描述。

示例性過程的操作在單獨區(qū)塊中被示出并且參考這些區(qū)塊進行概述。過程被示出為區(qū)塊的邏輯流,其中的每一個區(qū)塊可表示可在硬件、軟件或其組合中實現的一個或多個操作。在軟件的上下文中,操作表示存儲于一個或多個計算機可讀介質上的計算機可執(zhí)行指令,所述指令在由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行所表述的操作??傮w上,計算機可執(zhí)行指令包括例行程序、程序、對象、模塊、部件、數據結構等,其執(zhí)行特定功能或實現特定抽象數據類型。描述操作的順序不意圖被解釋為限制,并且任何數量的所描述操作可以任意順序執(zhí)行、以任意順序組合、被再分成多個子操作和/或并行執(zhí)行以實現所描述過程。所描述過程或其部分可由與一個或多個裝置104、106、108、130、132、134相關聯的資源(諸如一個或多個內部或外部cpu或gpu)和/或一片或多片硬件邏輯(諸如fpga、dsp或其他類型的加速器)執(zhí)行。

上述所有方法和過程可以在由一個或多個通用計算機或處理器執(zhí)行的軟件代碼模塊中具體化并且通過所述軟件代碼模塊來完全自動化。所述代碼模塊可以存儲在任何類型的計算機可讀存儲介質或其他計算機存儲裝置中。所述方法中的一些或所有可以可替代地在專用計算機硬件中具體化。

除非另外特別說明,否則諸如“能夠”、“可以”、“可能”或“也許”等的條件性語言在上下文內被理解為用于呈現:盡管其他實施方案不包括某些特征、元素和/或步驟,但某些實例包括某些特征、元素和/或步驟。因此,這種條件性語言通常并不意圖暗示某些特征、元素和/或步驟是一個或多個實例以任何方式所要求的,或一個或多個實例必定包括用于在有或沒有用戶輸入或提示的情況下決定某些特征、元素和/或步驟被包括在任何特定實例中或將要在任何特定實例中執(zhí)行的邏輯。除非另外特別說明,否則諸如短語“x、y或z中的至少一個”的連接性語言被理解為用于呈現項目、項等可以是x、y或z或其組合。

本文所描述的和/或附圖中描繪的流程圖任何例程描述、元素或區(qū)塊應理解為潛在地表示包括用于實現例程中的特定邏輯功能或元素的一個或多個可執(zhí)行指令的代碼模塊、代碼片段或代碼部分。替代性實現被包括在本文所述實例的范圍內,其中如與本領域中的技術人員所理解的那樣,元素或功能可以刪除、不按照所示出或論述的順序執(zhí)行,包括基本上同時執(zhí)行或者逆序執(zhí)行,取決于所涉及的功能。應強調,可以對上述實例做出許多改變和修改,這些改變和修改的元素應被理解為包含在其他可接受的實例當中。在本文中,所有這類修改和變化意圖被包括在本公開的范圍內,并且受所附權利要求書保護。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
惠州市| 怀仁县| 名山县| 合川市| 瓮安县| 积石山| 永昌县| 金华市| 信丰县| 凌云县| 新兴县| 彭山县| 通江县| 含山县| 宝山区| 漳州市| 威海市| 泉州市| 鄂托克旗| 涞源县| 华池县| 通江县| 武安市| 朝阳市| 同心县| 保靖县| 柳州市| 佳木斯市| 鹿泉市| 子洲县| 上犹县| 哈巴河县| 宾阳县| 紫阳县| 全椒县| 陇川县| 东辽县| 永顺县| 九龙坡区| 海口市| 尼勒克县|