新四季網

一種數據同步方法、更新方法及裝置與流程

2023-11-10 15:55:27 2


本申請涉及通信技術領域,尤其涉及一種數據同步方法、更新方法及裝置。



背景技術:

網絡存儲或者稱雲存儲技術近年來發展迅速。網絡存儲技術一方面為客戶端設備的本地文件提供網絡存儲功能,另一方面可以實現多客戶端設備、多存儲設備或者多平臺儲存數據的自動同步功能。

用戶的文件以樹狀形式存儲在伺服器端,其它客戶端設備與服務端通信,獲取或者提交文件樹的變化,實現各客戶端設備與伺服器之間的文件同步,省去了用戶在各個客戶端設備之間對比和拷貝文件的過程,為移動時代用戶的文件存儲需求提供了方便。

典型的同步流程為:客戶端設備A的本地文件樹發生變化後,提交變化信息到伺服器,實現到客戶端設備A與服務端數據一致;客戶端設備B感知並獲取到伺服器端的變化信息,將客戶端設備B的本地文件樹同步為與伺服器端一致。同步完成後,客戶端設備A與客戶端設備B的文件樹結構達到一致。

申請內容

本申請實施例提供一種數據同步方法及裝置,用以根據文件樹上待同步給客戶端設備的節點實現文件樹更新。

本申請實施例提供的數據同步方法,包括:

接收客戶端設備發送的數據同步請求,所述數據同步請求中包括文件樹索引信息;

根據所述文件樹索引信息,獲取網絡側存儲的與所述文件樹索引信息對應 的第一文件樹;

確定所述第一文件樹上待同步給所述客戶端設備的節點,一個文件樹中除根節點以外的每個節點對應的一個文件或文件夾;

根據確定出的待同步給所述客戶端設備的節點,向所述客戶端設備發送數據同步命令,所述數據同步命令用於指示所述客戶端設備對所述客戶端設備存儲的與所述文件樹索引信息對應的第二文件樹進行更新。

優選地,所述確定所述第一文件樹上待同步給所述客戶端設備的節點,包括:確定數據同步方式,所確定的數據同步方式包括全量更新或差量更新;根據確定的同步方式,確定所述第一文件樹上待同步給所述客戶端設備的節點。

優選地,所述數據同步請求中還包括與所述文件樹索引信息對應的第二文件樹的版本號;

所述第一文件樹以及所述第二文件樹中,根節點的版本號與除根節點以外的其它所有節點中的最大版本號相同,文件樹的版本號與該文件樹的根節點的版本號相同;當文件樹中的一個節點更新時,該節點的版本號遞增。

優選地,所述確定數據同步方式,包括:

確定所述第一文件樹中的有效節點數,其中,一個文件樹上的有效節點是指該文件樹上除被標記為已刪除節點之外的所有節點;

確定所述第一文件樹與所述第二文件樹的差量節點數,其中,所述第一文件樹與所述第二文件樹的差量節點是指所述第一文件樹上版本號大於所述第二文件樹的版本號的節點;

若所述差量節點數大於或等於所述有效節點數的n倍,則確定採用全量更新,否則確定採用差量更新,n≥1。

優選地,所述數據同步請求中還包括同步方式指示信息,所述同步方式指示信息所指示的同步方式包括全量更新或差量更新;

所述確定數據同步方式,包括:

根據所述數據同步請求中包括的同步方式指示信息,確定數據同步方式。

優選地,若所述同步方式指示信息為全量更新指示信息,則所述全量更新指示信息是所述客戶端設備在根據接收到的數據同步命令進行文件樹同步操作失敗後,攜帶於所述數據同步請求中的。

優選地,所述根據確定的同步方式,確定所述第一文件樹上待同步給所述客戶端設備的節點,包括:

若確定出的同步方式為全量更新,則將所述第一文件樹上的有效節點確定為待同步給所述客戶端設備的節點;其中,一個文件樹上的有效節點是指該文件樹上除被標記為已刪除節點之外的所有節點;或者

若確定出的同步方式為差量更新,則將所述第一文件樹與所述第二文件樹的差量節點確定為待同步給所述客戶端設備的節點,其中,所述第一文件樹與所述第二文件樹的差量節點是指所述第一文件樹上版本號大於所述第二文件樹的版本號的節點。

優選地,所述向所述客戶端設備發送數據同步命令,包括:

根據確定出的所述第一文件樹上待同步給所述客戶端設備的節點,以及分頁大小參數,確定總分頁頁數,以及每頁對應的節點的更新信息;其中,所述分頁大小參數用節點數量表示,一個分頁對應的節點數量等於所述分頁大小參數;

根據分頁順序,向所述客戶端設備發送數據同步命令,其中攜帶當前分頁對應的節點的更新信息、當前分頁的頁號以及總分頁頁數。

其中,根據分頁順序,向所述客戶端設備發送數據同步命令之後,還包括:

接收所述客戶端設備再次發送的數據同步請求,其中攜帶有所請求的分頁的頁號;

根據所述客戶端設備再次發送的數據同步請求中攜帶的分頁頁號,獲取對應分頁所對應的節點的更新信息;

向所述客戶端設備發送數據同步命令,其中攜帶有當前分頁對應的節點的更新信息、當前分頁的頁號以及總分頁頁數。

優選地,若在向所述客戶端設備發送數據同步命令後,所述第一文件樹的版本號發生更新,則還包括:

將更新後的所述第一文件樹上,版本號大於所述第一文件樹更新前的版本號的節點的更新信息,發送給所述客戶端設備;或者

向所述客戶端設備發送通知消息,所述通知消息用於通知所述第一文件樹的版本號發生更新並徵詢所述客戶端設備是否發起數據同步請求;其中,所述通知消息中包括所述第一文件樹更新後的版本號。

本申請實施例還提供了一種數據同步裝置,包括:

接收模塊,用於接收客戶端設備發送的數據同步請求,所述數據同步請求中包括文件樹索引信息;

獲取模塊,用於根據所述文件樹索引信息,獲取網絡側存儲的與所述文件樹索引信息對應的第一文件樹;

確定模塊,用於確定所述第一文件樹上待同步給所述客戶端設備的節點,一個文件樹中除根節點以外的每個節點對應的一個文件或文件夾;

發送模塊,用於根據確定出的待同步給所述客戶端設備的節點,向所述客戶端設備發送數據同步命令,所述數據同步命令用於指示所述客戶端設備對所述客戶端設備存儲的與所述文件樹索引信息對應的第二文件樹進行更新。

優選地,所述確定模塊具體用於:確定數據同步方式,所確定的數據同步方式包括全量更新或差量更新;根據確定的同步方式,確定所述第一文件樹上待同步給所述客戶端設備的節點。

其中,所述數據同步請求中還包括與所述文件樹索引信息對應的第二文件樹的版本號;所述第一文件樹以及所述第二文件樹中,根節點的版本號與除根節點以外的其它所有節點中的最大版本號相同,文件樹的版本號與該文件樹的根節點的版本號相同;當文件樹中的一個節點更新時,該節點的版本號遞增。

優選地,所述確定模塊具體用於:

確定所述第一文件樹中的有效節點數,其中,一個文件樹上的有效節點是 指該文件樹上除被標記為已刪除節點之外的所有節點;

確定所述第一文件樹與所述第二文件樹的差量節點數,其中,所述第一文件樹與所述第二文件樹的差量節點是指所述第一文件樹上版本號大於所述第二文件樹的版本號的節點;

若所述差量節點數大於或等於所述有效節點數的n倍,則確定採用全量更新,否則確定採用差量更新,n≥1。

本申請實施例中,網絡側接收到客戶端設備發送的數據同步請求後,獲取網絡側存儲的對應的文件樹,確定該網絡側存儲的文件樹上需要待同步給客戶端設備的節點,並向客戶端設備發送數據同步命令,使客戶端設備根據該數據同步命令進行數據同步。與每次文件樹同步時將文件樹的全部節點發送給客戶端進行同步更新相比,可以提高數據同步效率。

本申請實施例還提供一種數據更新方法及裝置,用以實現基於文件樹的數據更新。

本實施例提供的數據更新方法,包括:

接收數據同步命令,所述數據同步命令中包括文件樹索引信息以及節點的更新信息;其中,一個文件樹中除根節點以外的每個節點對應一個文件或文件夾;

根據所述文件樹索引信息,獲取對應的待同步的文件樹;

根據所述數據同步命令中包括的節點的更新信息,更新所述待同步的文件樹;其中,一個文件樹中,根節點的版本號與除根節點以外的其他所有節點中的最大版本號相同,文件樹的版本號與該文件樹的根節點的版本號相同,當文件樹中的一個節點更新時,該節點的版本號遞增。

優選地,所述節點的更新信息包括:待修改文件名稱的節點的在文件樹中的位置信息以及修改後的文件名;相應地,所述更新所述待同步的文件樹,包括:

根據所述待修改文件名稱的節點的位置信息,將所述待同步的文件樹上相 應節點的版本號加1,並更新該文件樹的版本號;

根據修改後的文件名稱,更新節點與文件的關聯關係中所述待修改文件名稱的節點所對應的文件的名稱。

優選地,所述節點的更新信息包括:待修改文件夾名稱的節點在文件樹中的位置信息以及修改後的文件夾名稱;相應地,所述更新所述待同步的文件樹,包括:

根據所述待修改文件夾名稱的節點的位置信息,將所述待同步的文件樹上相應節點的版本號加1;

若所述待修改文件夾名稱的節點下包含子節點,則分別更新所述待修改文件夾名稱的節點下的所有子節點的版本號;其中,對於每個子節點,更新該子節點的版本號時,在該子節點當前的版本號上加上該子節點的父節點的版本差,所述父節點的版本差為該父節點更新後的版本號與更新前的版本號之差;

更新所述待同步的文件樹的版本號;

根據修改後的文件夾名稱,更新節點與文件夾的關聯關係中,所述待修改文件夾名稱的節點所對應的文件夾的名稱。

優選地,所述節點的更新信息包括:待刪除的節點在文件樹中的位置信息;相應地,所述更新待同步的文件樹,包括:

根據所述待刪除的節點的位置信息,在所述待同步的文件樹上將相應節點標記為刪除;

將所述被標記為刪除的節點的版本號加1,並更新所述待同步的文件樹的版本號。

優選地,所述節點的更新信息包括:待刪除的節點在文件樹中的位置信息;相應地,所述更新所述待同步的文件樹,包括:

根據所述待刪除的節點的位置信息,在所述待同步的文件樹上將相應節點標記為刪除,以及將所述被標記為刪除的節點的所有子節點標記為刪除;

分別將所述標記為刪除的節點的版本號加1,並更新所述待同步的文件樹 的版本號。

優選地,所述節點的更新信息包括:新增加的節點在文件樹中的位置信息以及所述新增加的節點所對應的文件;相應地,所述更新所述待同步的文件樹,包括:

根據所述新增加的節點的位置信息,在所述待同步的文件樹上增加節點;

將新增加的節點的版本號設置為所述待同步的文件樹的版本號加1,並更新所述待同步的文件樹的版本號;

存儲所述新增加的節點所對應的文件,建立所述新增加的節點與該節點所對應的文件的關聯關係。

優選地,所述節點的更新信息包括:新增加的節點在文件樹中的位置信息以及所述新增加的節點所對應的文件夾;相應地,所述更新所述待同步的文件樹,包括:

根據所述新增加的節點的位置信息,在所述待同步的文件樹上增加節點;

將新增加的節點的版本號設置為所述待同步的文件樹的版本號加1,並更新所述待同步的文件樹的版本號;

建立所述新增加的節點與該節點所對應的文件夾的關聯關係。

本申請實施例還提供了一種數據更新裝置,包括:

接收模塊,用於接收數據同步命令,所述數據同步命令中包括文件樹索引信息以及節點的更新信息;其中,一個文件樹中除根節點以外的每個節點對應一個文件或文件夾;

獲取模塊,用於根據所述文件樹索引信息,獲取對應的待同步的文件樹;

更新模塊,用於根據所述數據同步命令中包括的節點的更新信息,更新所述待同步的文件樹;其中,一個文件樹中,根節點的版本號與除根節點以外的其他所有節點中的最大版本號相同,文件樹的版本號與該文件樹的根節點的版本號相同,當文件樹中的一個節點更新時,該節點的版本號遞增。

本申請實施例中,接收到數據同步命令後,根據該數據同步命令中包含的 文件樹索引信息獲取對應的文件樹,根據該數據同步命令中包含的節點更新信息更新該文件樹,從而實現了基於文件樹的數據更新過程。

附圖說明

為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對於本領域的普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為本申請實施例提供的網絡架構示意圖;

圖2為本申請實施例提供的文件樹更新流程示意圖;

圖3為本申請實施例提供的文件樹版本號更新流程示意圖;

圖4至圖7分別為本申請實施例提供的文件樹更新示意圖;

圖8為本申請實施例提供的文件樹同步流程示意圖;

圖9為本申請實施例提供的文件樹同步過程中網絡側的文件樹發生更新的示意圖;

圖10為本申請實施例提供的數據更新裝置的結構示意圖;

圖11為本申請實施例提供的數據同步裝置的結構示意圖;

圖12為本申請實施例提供的客戶端設備的結構示意圖;

圖13為本申請實施例提供的伺服器的結構示意圖。

具體實施方式

為了使本申請的目的、技術方案和優點更加清楚,下面將結合附圖對本申請作進一步地詳細描述,顯然,所描述的實施例僅僅是本申請一部份實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬於本申請保護的範圍。

圖1示例性地示出了本申請實施例適用的網絡系統架構。

如圖1所示,該架構中包括伺服器101,伺服器101通過網絡102與多個客戶端設備通信。所述網絡可以是無線通信網絡,也可以是有線通信網絡。

所述客戶端設備可包括無線通信設備,比如手機、平板電腦、穿戴設備等,所述客戶端設備也可以是個人計算機、筆記本電腦等。比如,圖中示出的客戶端設備包括:第一手機103、第二手機104、平板電腦105、筆記本電腦106、計算機107。

所述伺服器101可以是採用雲計算技術的伺服器或伺服器集群。伺服器101能夠提供網絡存儲功能。

在實際應用中,該伺服器101可為網盤伺服器,提供文件通過功能,客戶端設備可與伺服器101進行文件同步。比如,第二手機104的本地文件發生變化後,提交變化信息到伺服器101,實現到第二手機104與服務端數據一致;平板電腦105感知並獲取到伺服器端的變化信息,將平板電腦105的本地文件同步為與伺服器端一致。同步完成後,第二手機04與平板電腦105的文件樹結構達到一致。

用戶在使用文件同步功能時,一般需要使用用戶帳戶登錄伺服器。一個用戶可以使用不同的登錄伺服器使用文件同步功能,這樣一個用戶在這些客戶端設備上的文件與伺服器上存儲的該用戶的文件保持同步。所有使用文件同步服務功能的用戶均分配有唯一用戶ID,客戶端設備上存儲的用戶文件,以及伺服器上存儲的用戶文件,可以使用用戶ID進行索引或標識。一個用戶ID僅對於一個文件樹。

本申請實施例中,客戶端設備和伺服器均以文件樹形式存儲文件。文件樹是指以樹形結構存儲文件。文件樹包括一個根節點以及根節點下的各級節點,除根節點以外的任何一個節點標識一個文件或文件夾,如果一個節點標識一個文件夾且該文件夾下還有子文件夾和/或文件,則文件夾對應的節點下包含一個或多個子節點。如果一個節點對應一個文件,則該節點的屬性信息中可包含該文件的名稱、存儲位置信息等,如果一個節點對應一個文件夾,則該節點的屬 性信息可包含該文件夾的名稱、存儲位置信息等。

本申請實施例中,客戶端設備和伺服器均以文件樹的形式存儲文件,客戶端設備在客戶端設備側存儲的文件樹與伺服器在網絡側存儲的文件樹需要保持同步,文件樹中的每個節點均對應一個文件或文件夾。

本申請實施例中的文件樹具有以下特點:

-對應於每個文件樹維護有該文件樹的版本號,文件樹的版本號在每次節點更新時均會變化。本申請實施例中,以文件樹版本號遞增變化為例描述。

-對應於每個文件節點維護有該節點的版本號,一個節點的版本號在每次該節點發生變化時會變化;

-文件樹節點包括文件節點和文件夾節點,一個文件節點對應一個文件,一個文件夾節點對應一個文件夾;

-文件節點發生任何變化(比如增加文件節點、刪除文件節點或修改文件節點)時,目標節點新版本號=文件樹當前版本號+1,文件樹當前版本號=文件樹節點最大版本號;

-文件夾節點發生新增時,目標節點新版本號=文件樹當前版本號+1,文件樹當前版本號=文件樹節點最大版本號;

-文件夾節點發生刪除時,目標節點新版本號=文件樹當前版本號+1,文件樹當前版本號=文件樹節點最大版本號;文件夾節點及其子文件夾/子文件的節點直接刪除,版本號不發生變化

-文件夾節點發生修改時,目標節點新版本號=文件樹當前版本號+1,文件樹當前版本號=文件樹節點最大版本號;其子文件夾和子文件節點(向下遞歸)的版本號=當前版本號+目標節點版本差,版本差=目標節點新舊版本號之差;

-客戶端維護本地文件樹的版本號,每次更新完成後更新為與服務端文件樹版本號一致。

本實施例中,「文件/文件夾」的表達方式表示「文件和/或文件夾,以下描述中的「文件/文件夾」可按照此處的說明進行解釋。

基於圖1所示的系統架構,圖2示出了本申請實施例提供的一種數據更新流程,該流程可在客戶端設備側執行,也可在伺服器側執行。

比如,在一些場景中,用戶登錄客戶端設備A,客戶端設備A自動啟動檢查文件是否有更新,如果有更新,則客戶端設備A向伺服器發送數據同步命令,伺服器根據該數據同步命令更新網絡側存儲的與該用戶的ID對應的文件樹,以使客戶端設備A上該用戶ID對應的文件樹與網絡側該用戶ID對應的文件樹保持同步,再例如,用戶修改客戶端設備A上的文件,客戶端設備A向伺服器發送數據同步命令,伺服器根據該數據同步命令更新網絡側存儲的與該用戶的ID對應的文件樹,以使客戶端設備A上該用戶ID對應的文件樹與網絡側該用戶ID對應的文件樹保持同步。再比如,在另一些場景中,伺服器根據客戶端設備A發送的數據同步命令對某個用戶ID對應的文件樹更新後,向客戶端設備B發送數據同步命令,客戶端設備B根據該數據同步命令進行文件樹更新,以使客戶端設備B上該用戶ID對應的文件樹與網絡側該用戶ID對應的文件樹保持同步。

如圖2所示,該數據同步流程可包括以下步驟:

步驟201:接收數據同步命令,所述數據同步命令中包括文件樹索引信息以及節點的更新信息。

所述數據同步命令中至少包括文件樹的索引信息以及發生變更的節點的更新信息。如前所述,用戶ID可作為文件樹的索引信息,當然也不排除使用文件樹ID作為文件樹索引信息的情況,本申請實施例對此不作限制。所述數據同步命令中攜帶的節點的更新信息中,通常會包括操作類型指示信息。進一步地,根據文件操作類型的不同而不同,比如,節點的更新信息可包括:發生變更的節點在文件樹中的位置信息、發生變更的節點所對應的文件/文件夾。

舉例來說,根據文件/文件夾的操作類型,節點的更新信息的內容可包括以 下幾種情況:

-對於修改文件名的操作,節點的更新信息可包括:待修改文件名稱的節點在文件樹中的位置信息以及修改後的文件名;

-對於修改文件夾名稱的操作,節點的更新信息可包括:待修改文件夾名稱的節點在文件樹中的位置信息以及修改後的文件夾名稱;

-對於刪除文件的操作,節點的更新信息可包括:待刪除的節點在文件樹中的位置信息;

-對於刪除文件夾的操作,節點的更新信息可包括:待刪除的節點在文件樹中的位置信息;

-對於新增加文件的操作,節點的更新信息可包括:新增加的節點在文件樹中的位置信息以及所述新增加的節點所對應的文件;

-對於新增加文件夾的操作,節點的更新信息可包括:新增加的節點在文件樹中的位置信息以及所述新增加的節點所對應的文件夾。

其中,節點在文件樹中的位置信息,可採用相對位置來表示,比如,通過指示出一個節點的父節點的標識,從而可以定位出該節點的位置。

步驟202:根據數據同步命令中的文件樹索引信息,獲取對應的待同步的文件樹。

如前所述,文件樹索引信息可以是用戶ID,該步驟中可根據用戶ID獲取網絡側存儲的與該用戶ID對應的文件樹。

進一步地,在根據用戶ID確定出待同步的文件樹後,可以鎖定該文件樹,以保證在對該文件樹進行更新的過程中,不會有其它操作對本次更新有任何影響。

步驟203:根據數據同步命令中的節點的更新信息,更新待同步的文件樹。進一步地,在完成文件樹更新操作後,可解除對該文件樹的鎖定。

如前所述,文件/文件夾的操作類型可包括:修改文件名的操作、修改文件夾名稱的操作、刪除文件的操作、刪除文件夾的操作、新增加文件的操作、新 增加文件夾的操作等。文件/文件夾的位置移動操作可轉化為在目的位置新增文件/文件夾的操作以及在源位置刪除文件/文件夾的操作,因此,下面僅以上述幾種操作類型對文件樹的根系過程進行描述。

(1)修改文件名的操作

此種情況下,數據同步命令中包含的節點的更新信息,可包括:待修改文件名稱的節點的在文件樹中的位置信息以及修改後的文件名。

步驟203的具體實現過程可以是:根據待修改文件名稱的節點的位置信息,將待同步的文件樹上相應節點的版本號加1,並更新該文件樹的版本號;根據修改後的文件名稱,更新節點與文件的關聯關係中該待修改文件名稱的節點所對應的文件的名稱。

其中,如前所述,文件樹中除根節點以外的每個節點對應一個文件或文件夾,節點與文件/文件夾的關聯關係可通過關聯關係表來保存,該關聯關係表中記錄了文件樹上的每個節點(除根節點以外)的標識信息,以及每個節點對應的文件/文件夾的存儲路徑(可包括存儲位置以及文件/文件夾名稱)。相應地,當文件名更新時,需要針對相應節點更新該關聯關係表中該節點所對應的文件的名稱。

(2)修改文件夾名稱的操作

此種情況下,數據同步命令中包含的節點的更新信息,可包括:待修改文件夾名稱的節點在文件樹中的位置信息以及修改後的文件夾名稱。

步驟203的具體實現過程可以是:根據待修改文件夾名稱的節點的位置信息,將待同步的文件樹上相應節點的版本號加1;若待修改文件夾名稱的節點下包含子節點,則分別更新該待修改文件夾名稱的節點下的所有子節點的版本號,其中,對於每個子節點,更新該子節點的版本號時,在該子節點當前的版本號的基礎上加上該子節點的父節點(即上述更新名稱的文件夾所對應的節點)的版本差,所述父節點的版本差為該父節點更新後的版本號與更新前的版本號之差;更新所述待同步的文件樹的版本號,比如更新為該文件樹上除根節 點以外的所有節點中的最大版本號。此為,還要根據修改後的文件夾名稱,更新節點與文件夾的關聯關係中,所述待修改文件夾名稱的節點所對應的文件夾的名稱。

其中,如前所述,文件樹中除根節點以外的每個節點對應一個文件或文件夾,節點與文件/文件夾的關聯關係可通過關聯關係表來保存。相應地,當文件夾名更新時,需要針對相應節點更新該關聯關係表中該節點所對應的文件夾的名稱。

(3)刪除文件的操作

此種情況下,數據同步命令中包含的節點的更新信息,可包括:待刪除的節點在文件樹中的位置信息。

步驟203的具體實現過程可以是:根據待刪除的節點的位置信息,在待同步的文件樹上將相應節點標記為刪除;將被標記為刪除的節點的版本號加1,並更新待同步的文件樹的版本號。

其中,如前所述,文件樹中除根節點以外的每個節點對應一個文件或文件夾,節點與文件/文件夾的關聯關係可通過關聯關係表來保存。相應地,當刪除文件時,可進一步地針對相應節點刪除該節點與文件的關聯關係信息。

(4)刪除文件夾的操作

此種情況下,數據同步命令中包含的節點的更新信息,可包括:待刪除的節點在文件樹中的位置信息。

步驟203的具體實現過程可以是:根據待刪除的節點的位置信息,在待同步的文件樹上將相應節點標記為刪除,以及將被標記為刪除的節點的所有子節點標記為刪除;分別將標記為刪除的節點的版本號加1,並更新待同步的文件樹的版本號。

其中,如前所述,文件樹中除根節點以外的每個節點對應一個文件或文件夾,節點與文件/文件夾的關聯關係可通過關聯關係表來保存。相應地,當刪除文件夾時,可進一步地針對相應節點刪除該節點與文件夾的關聯關係信息。

(5)新增加文件的操作

此種情況下,數據同步命令中包含的節點的更新信息,可包括:新增加的節點在文件樹中的位置信息以及所述新增加的節點所對應的文件。

步驟203的具體實現過程可以是:根據新增加的節點的位置信息,在待同步的文件樹上增加節點;將新增加的節點的版本號設置為待同步的文件樹的版本號加1,並更新待同步的文件樹的版本號;存儲新增加的節點所對應的文件,建立該新增加的節點與該節點所對應的文件的關聯關係。

其中,如前所述,文件樹中除根節點以外的每個節點對應一個文件或文件夾,節點與文件/文件夾的關聯關係可通過關聯關係表來保存。相應地,當新增加文件時,可在該關聯關係表中增加一條記錄,用來記錄該新增加的節點與對應的文件的關聯關係。

(6)新增加文件夾的操作

此種情況下,數據同步命令中包含的節點的更新信息,可包括:新增加的節點在文件樹中的位置信息以及所述新增加的節點所對應的文件夾。

步驟203的具體實現過程可以是:根據新增加的節點的位置信息,在待同步的文件樹上增加節點;將新增加的節點的版本號設置為待同步的文件樹的版本號加1,並更新待同步的文件樹的版本號;建立該新增加的節點與該節點所對應的文件夾的關聯關係。

其中,如前所述,文件樹中除根節點以外的每個節點對應一個文件或文件夾,節點與文件/文件夾的關聯關係可通過關聯關係表來保存。相應地,當新增加文件夾時,可在該關聯關係表中增加一條記錄,用來記錄該新增加的節點與對應的文件夾的關聯關係。

基於圖2所示的數據同步流程以及數據同步原理,圖3以對客戶端設備上的文件樹進行更新為例,示出了一種具體實施時的文件樹及節點的版本流程,該流程僅示出了文件樹版本以及節點版本的更新相關流程,可由客戶端設備或客戶端設備中的數據更新裝置執行。

如圖3所示,當客戶端設備中的用戶文件/文件夾發生更新時(步驟301),該裝置該確定更新操作所對應的文件樹上的目標節點,更新目標節點的版本號,即,目標節點版本號=文件樹版本號+1(步驟302);

在步驟303中,如果判斷該目標節點對應一文件夾,則計算該目標節點的版本差:版本差=目標節點新版本號-目標節點舊版本號(步驟303~步驟304)。

在步驟305中,如果判斷為是刪除操作,則遍歷該目標節點下的所有子節點,並將遍歷到的子節點設置為刪除(步驟305、步驟309至步驟311)。在遍歷過程中,如果遍歷到的子節點對應的是文件,則更新文件樹的版本號:文件樹版本號=除根節點外所有節點中最大的版本號,並結束此版本更新流程(步驟312);如果遍歷到的子節點對應的是文件夾,則針對當前遍歷到的子節點,跳轉到步驟309執行,以遍歷該子節點下的子節點,以此類推,直到遍歷完成該目標節點下的最低級別的子節點。

在步驟305中,如果判斷為不是刪除操作,則遍歷該目標節點的子節點,對遍歷到的子節點更新其版本號:子節點版本號=版本差+子節點當前版本號(步驟306、步驟307)。在遍歷過程中,如果遍歷到的子節點對應的是文件,則更新文件樹的版本號:文件樹版本號=除根節點外所有節點中最大的版本號,並結束此版本更新流程(步驟312);如果遍歷到的子節點對應的是文件夾,則針對當前遍歷到的子節點,跳轉到步驟306執行,以遍歷該子節點下的子節點,以此類推,直到遍歷完成該目標節點下的最低級別的子節點。

在步驟303中,如果判斷該目標節點對應一文件,則更新文件樹的版本號:文件樹版本號=除根節點外所有節點中最大的版本號,並結束此版本更新流程(步驟312),並結束此版本更新流程。

優選地,在一些實施例中,如果對目標節點的更新操作類型為刪除操作,則對於該目標節點的子節點的版本號可不做更新,並且將該目標節點及其所有子節點的狀態設置為已刪除,這樣可以保證用戶或者應用程式在誤刪除文件或文件夾時,可以找回被刪除的數據。在實際應用中,優選地,也可以將文件樹 中標記為已刪除狀態的節點保留一段時間,比如一個月,如果超過了這個時間長度,則被標記為已刪除的節點將被從文件樹上刪除,這樣一方面給用戶恢復數據的操作保留了一段時間,另一方面也可以降低存儲設備的存儲空間開銷。

為了更清楚地說明文件樹的版本號以及文件樹中的節點的版本號的更新過程,下面以三種具有應用場景為例舉例說明。

場景一

參見圖4,文件樹更新過程包括:

(1)創建文件樹

創建根節點ROOT,目前尚未創建任何文件/文件夾,因此文件樹版本號為0,表示為ROOT(0)。以下描述中,括號內的數字均表示該節點的版本號。

(2)在根目錄下創建文件夾:D1、D2、D3、D4;

在根節點ROOT下增加節點D1(1),根節點更新為ROOT(1);

在根節點ROOT下增加節點D2(2),根節點更新為ROOT(2);

在根節點ROOT下增加節點D3(2),根節點更新為ROOT(3);

在根節點ROOT下增加節點D2(4),根節點更新為ROOT(4);

(3)在文件夾D2下創建文件:F1、F2;

在節點D2下增加節點F1(5),根節點更新為ROOT(5);

在節點D2下增加節點F2(6),根節點更新為ROOT(6);

(4)在根目錄下創建文件夾:D5、D6、D7、D8;

在根節點ROOT下增加節點D5(7),根節點更新為ROOT(7);

在根節點ROOT下增加節點D6(8),根節點更新為ROOT(8);

在根節點ROOT下增加節點D7(9),根節點更新為ROOT(9);

在根節點ROOT下增加節點D8(10),根節點更新為ROOT(10);

(5)在文件夾D4下創建文件:F3、F4;

在節點D4下增加節點F3(11),根節點更新為ROOT(11);

在節點D4下增加節點F4(12),根節點更新為ROOT(12);

(6)在文件夾D5下創建文件:F5、F6、F7、F8;

在節點D5下增加節點F5(13),根節點更新為ROOT(13);

在節點D5下增加節點F6(14),根節點更新為ROOT(14);

在節點D5下增加節點F7(15),根節點更新為ROOT(15);

在節點D5下增加節點F8(16),根節點更新為ROOT(16);

(7)在文件夾D6下創建文件:F9、F10;

在節點D6下增加節點F9(17),根節點更新為ROOT(17);

在節點D6下增加節點F10(18),根節點更新為ROOT(18)。

場景二

基於圖4所示的文件樹,將節點D2對應的文件夾的名稱修改為D2New。

針對該文件夾名稱修改操作,參見圖5,將節點D2對應的文件夾名稱修改為D2New,相應地,該節點表示為節點D2New,並對該文件樹執行以下版本更新操作:

更新節點D2New的版本號為19,更新根節點為ROOT(19);

更新節點D2New下的子節點F1的版本號為:5+(19-2)=22,更新根節點為ROOT(22);

更新節點D2New下的子節點F2的版本號為:6+(19-2)=23,更新根節點為ROOT(23)。

場景三

基於圖5所示的文件樹,刪除節點D4對應的文件夾。

針對該刪除文件夾的操作,參見圖6,對該文件樹執行以下更新操作:

將節點D4標記為已刪除,更新節點D4的版本號為24,更新根節點為ROOT(24);

將節點D4下的子節點F3和子節點F4標記為刪除,不修改子節點F4和子節點F4的版本號。

場景四

基於圖6所示的文件樹,將文件夾D5移動至文件夾D2New下。

針對該移動文件夾的操作,參見圖7,對該文件樹執行以下更新操作:

將節點D5及其子節點移動到節點D2New下,更新節點D5的版本號為25,更新根節點為ROOT(25);

更新節點F5的版本號為:13+(25-7)=31,更新根節點為ROOT(31);

更新節點F6的版本號為:14+(25-7)=32,更新根節點為ROOT(32);

更新節點F7的版本號為:15+(25-7)=33,更新根節點為ROOT(33);

更新節點F8的版本號為:16+(25-7)=34,更新根節點為ROOT(34)。

以上實施例描述了文件樹的更新過程。上述文件樹更新過程可應用於以下場景:客戶端設備向網絡側發送數據同步請求,以便將本客戶端設備上的文件樹與網絡側的文件樹保持同步。比如,當客戶端設備開啟後發送該數據同步請求,也可以是基於用戶的操作(比如用戶在數據同步請求界面中通過觸屏操作提交數據同步請求)發送該數據同步請求,或者,客戶端設備也可以根據設置的時間或周期發送該數據同步請求。

現有技術中常見的同步方法是,客戶端設備定時到伺服器端請求更新,伺服器端每次都返回當前伺服器端最新的完整文件樹結構,然後客戶端設備與本地數據進行逐一對比並處理差異。

上述過程中,由於伺服器每次均返回給客戶端設備全量數據,一方面網絡傳輸數據量大,另一方面客戶端設備處理開銷大,進而導致客戶端設備執行數據同步的效率較低。

可以看出,為了實現多客戶端設備的數據同步,其中一個重要環節就是對比客戶端設備與伺服器端的文件樹差異,並實現差異同步更新處理。對此,本申請實施例提供了數據同步方案,以實現差異化同步更新處理。

下面結合圖8,對基於客戶端設備發送的數據同步請求進行數據同步的過程進行描述。

參見圖8,為本申請實施例提供的數據同步流程示意圖。該流程可由網絡 側的設備執行,比如可由網絡側的伺服器執行,該伺服器存儲有用戶的文件樹可以實現文件樹更新和同步操作,並可對客戶端設備發送的數據同步請求進行響應處理。進一步地,針對客戶端設備發送的數據同步請求,該伺服器可以確定所採用的數據同步方式,比如採用全量更新還是差量更新,並根據所採用的數據同步方式將文件樹的節點信息發送給客戶端設備,從而實現客戶端設備與該伺服器上的文件樹保持同步。

如圖所示,該流程可包括如下步驟:

步驟801:接收客戶端設備發送的數據同步請求,所述數據同步請求中包括文件樹索引信息。

其中,文件樹索引信息的解釋說明可參見前述實施例,在此不再重複。

優選地,所述數據同步請求中還可包括與該文件樹索引信息對應的該客戶端設備上存儲的文件樹的版本號。以下為描述方便,將同一文件樹索引信息所對應的在伺服器端存儲的文件樹稱為第一文件樹,將在客戶端設備上存儲的文件樹稱為第二文件樹。伺服器可根據該數據同步請求中攜帶的第二文件樹的版本號,確定是否需要執行數據同步流程。比如,如果第二文件樹的版本號與網絡側存儲的第一文件樹的版本號相同,則表明客戶端設備和網絡側的文件樹已經同步,則可以不再執行後續同步流程。

步驟802:根據所述文件樹索引信息,獲取網絡側存儲的與所述文件樹索引信息對應的第一文件樹。

步驟803:確定第一文件樹上待同步給該客戶端設備的節點。

在具體實施時,可首先確定數據同步方式;然後根據確定出的數據同步方式,確定第一文件樹上待同步給該客戶端設備的節點。其中,所確定的數據同步方式包括全量更新或差量更新。相應地,若確定出的同步方式為全量更新,則將第一文件樹上的有效節點確定為待同步給該客戶端設備的節點;或者,若確定出的同步方式為差量更新,則將第一文件樹與第二文件樹的差量節點確定為待同步給該客戶端設備的節點。

其中,全量更新是指忽略客戶端設備現有文件樹結構和網絡側變化歷史,更新文件樹上的所有節點;差量更新是指在客戶端設備現有文件樹的基礎上,根據網絡側變化情況,同步更新變化的那一部分節點。

伺服器可以採用多種方法確定數據同步方式,以下列舉其中部分優選的實現方法:

(1)數據同步方式確定方法一

確定第一文件樹中的有效節點數,其中,一個文件樹上的有效節點是指該文件樹上除被標記為已刪除節點之外的所有節點;確定第一文件樹與第二文件樹的差量節點數,其中,第一文件樹與第二文件樹的差量節點是指第一文件樹上版本號大於第二文件樹的版本號的節點;若差量節點數大於或等於有效節點數的n倍(n≥1),則確定採用全量更新,否則確定採用差量更新。在實際應用中,優選地,n可以取值為2。

例如,網絡側的第一文件樹和客戶端設備的第二文件樹的版本號均為2000,文件樹上的節點數均為3000。如果此後,第一文件樹發生了以下更新過程:添加了2000個文件,此時第一文件樹的版本更新為4000,文件樹中有5000個節點;然後,又刪除其中一個文件夾節點下的4999個文件,此時第一文件樹的版本更新為5001,文件樹中剩餘一個節點。當客戶端設備發起數據同步請求時,第一文件樹的有效節點數為1,差量節點樹為2000(第一文件樹的節點數5000減去第二文件樹的節點數3000的差值),因為差量節點數2000大於有效節點數1的2倍,即2000>2,因此伺服器選擇的數據同步方式為全量更新。

該種數據同步確定方法中,如果差量節點數大於或等於有效節點數的n倍,則表明第一文件樹和第二文件樹的差異較大,此時採用全量更新可以更好地保證文件樹同步;如果差量節點數小於有效節點數的n倍,則表明第一文件樹和第二文件樹的差異相對較小,採用差量更新可以在保證文件樹同步的同時,減少網絡資源的開銷以及客戶端設備的處理操作開銷。

(2)數據同步方式確定方法二

數據同步請求中還可以包括同步方式指示信息,該同步方式指示信息所指示的同步方式包括全量更新或差量更新。相應地,伺服器可根據數據同步請求中包括的同步方式指示信息確定數據同步方式。

其中,在一些場景中,若同步方式指示信息為全量更新指示信息,則該全量更新指示信息是客戶端設備在根據接收到的數據同步命令進行文件樹同步操作失敗後,攜帶於該數據同步請求中的。也就是說,在此之前,客戶端設備根據伺服器發送的數據同步命令執行文件樹同步操作時發生異常,操作失敗,為了保證文件樹的同步,該客戶端設備再次發起數據同步請求時,可請求進行全量更新,此時,數據同步請求中攜帶有全量更新指示信息。

除了以上數據同步方式確定方法,在一些實施例中,也可以默認採用差量更新,在差量更新失敗的情況下,可進一步採用全量更新。例如,客戶端設備根據伺服器發送的數據同步命令執行文件樹同步操作時發生異常,操作失敗,則向伺服器反饋數據同步操作失敗信息,此時,伺服器可確定採用全量更新的方式,指示該客戶端設備對文件樹進行全量更新。

步驟804:根據確定出的待同步給所述客戶端設備的節點,向該客戶端設備發送數據同步命令,所述數據同步命令用於指示該客戶端設備對該客戶端設備存儲的與該文件樹索引信息對應的第二文件樹進行更新。文件樹的更新過程可參見前述實施例,在此不再贅述。

上述流程中,優選地,伺服器在向客戶端設備發送數據同步命令之前,可先根據確定出的第一文件樹上待同步給客戶端設備的節點,以及分頁大小參數,確定總分頁頁數,以及每頁對應的節點的更新信息,然後,根據分頁順序,向所述客戶端設備發送數據同步命令,其中攜帶當前分頁對應的節點的更新信息、當前分頁的頁號以及總分頁頁數。

在實際應用中,由於一次需要同步的節點數量可能比較多,若在一次數據同步命令過程中將所有待同步的節點通知給客戶端設備,一方面可能會佔用較大的網絡資源開銷,同時客戶端設備也可能佔用較多的處理資源開銷,此外, 用戶可能會有中斷同步操作的需求,為此,本申請實施例給出一種採用分頁方式指示客戶端設備進行文件樹同步操作的方案。

具體地,在步驟804中,伺服器每次向客戶端設備發送的數據同步命令中僅包含一頁內容的節點信息。具體每頁的大小可由分頁大小參數指示,該參數可用節點數量來表示。例如,如果步驟803中確定出待同步給該客戶端設備的節點數量有100個,而分頁大小參數為10,則需要10頁(每頁包含10個節點的信息),即發送10個數據同步命令,才能將這100個節點的信息發送給客戶端設備。其中,分頁大小參數可預先設置,比如,可由系統約定,也可以允許客戶端設備自行設置和修改。如果由客戶端設備自行設置或修改,則客戶端設備發送的數據同步請求中可攜帶由該客戶端設備自行設置或修改的分頁大小參數。分頁大小參數的取值,可根據網絡狀況、伺服器處理能力、客戶端設備處理能力來綜合考慮。

具體地,在步驟804中,伺服器可根據確定出的第一文件樹上待同步給客戶端設備的節點以及分頁大小參數,確定總分頁頁數,以及每頁對應的節點的更新信息;然後,根據分頁順序,向該客戶端設備發送數據同步命令,其中攜帶當前分頁對應的節點的更新信息、當前分頁的頁號以及總分頁頁數。

進一步地,在根據分頁順序向客戶端設備發送數據同步命令之後,如果當前已發送的分頁還未到達最後一頁,則客戶端設備還可能通過數據同步請求來請求下一頁節點更新信息,這樣,伺服器端還可包括以下步驟:

接收客戶端設備再次發送的數據同步請求,其中攜帶有所請求的分頁的頁號;根據客戶端設備再次發送的數據同步請求中攜帶的分頁頁號,獲取對應分頁所對應的節點的更新信息;向該客戶端設備發送數據同步命令,其中攜帶有當前分頁對應的節點的更新信息、當前分頁的頁號以及總分頁頁數。

在一些實施例中,伺服器指示客戶端設備進行文件樹同步的過程中,對第一文件樹進行鎖樹操作,從而使得第一文件樹與第二文件樹的同步過程中,不允許對第一文件樹進行更新操作。

在另一些實施例中,伺服器指示客戶端設備進行文件樹同步的過程中,可以不對第一文件樹進行鎖樹操作,即,在第一文件樹與第二文件樹的同步過程中,允許對第一文件樹進行更新操作。例如,在伺服器採用分頁方式向客戶端設備發送節點更新信息的過程中,可以不對第二文件樹進行鎖樹操作,因此在該過程中,第二文件樹可能會發生更新。針對這種情況,本申請實施例給出了以下優選方案,可以提升用戶體驗度以及實用價值。

若在向客戶端設備發送數據同步命令後,第一文件樹的版本號發生更新,則伺服器可將更新後的第一文件樹上,版本號大於第一文件樹更新前的版本號的節點的更新信息,發送給該客戶端設備,從而將在步驟803之後第一文件樹上再次更新的節點的相關信息發送給客戶端設備,從而使客戶端設備上的第二文件樹與第一文件樹保持同步。伺服器也可以向該客戶端設備發送通知消息,該通知消息用於通知第一文件樹的版本號發生更新並徵詢該客戶端設備是否發起數據同步請求,如果客戶端設備根據該通知消息再次發送數據同步請求,則此後的流程可同前所述。進一步地,該通知消息中可可包括第一文件樹更新後的版本號,以便該客戶端設備將該版本號呈現給用戶,供用戶選擇是否再次發起數據同步請求。

為了更清楚地理解上述流程,下面結合一個具體應用場景描述在伺服器採用分頁方式向客戶端設備發送待同步的節點的更新信息的過程中,網絡側的第一文件樹發生更新,此種情況下的處理操作。

此場景下,網絡側的第一文件樹如圖7所示。伺服器確定出採用全量更新方式進行數據同步,每個分頁包含的最大節點數為3,按節點版本號從小到大的順序,各分頁對應的節點具體如下所示:

第1頁:D1(1)、D3(3)、D6(8);

第2頁:D7(9)、D8(10)、F9(17);

第3頁:F10(18)、D2New(19)、F1(22);

第4頁:F2(23)、D5(25)、F5(31);

第5頁:F6(32)、F7(33)、F8(34)。

當伺服器向客戶端設備發送第3頁的節點更新信息後,網絡側的第一文件樹發生以下更新操作:節點D6及其子節點移動至節點D7下,第一文件樹更新後的結構以及版本號可如圖9所示。

根據客戶端設備的請求,伺服器按照之前確定出的5個分頁,將第4頁和第5頁的節點更新信息依次發給該客戶端設備。

第4頁:F2(23)、D5(25)、F5(31);

第5頁:F6(32)、F7(33)、F8(34)。

待上述5個分頁的節點更新信息發送完成之後,伺服器向該客戶端設備發送通知消息,通知客戶端設備文件樹有更新,然後根據該客戶端設備繼續進行數據同步的請求,確定版本號大於34的節點,這些節點包括:

D6(35)、F9(44)、F10(45)

伺服器以差量更新的方式指示客戶端設備進行文件樹同步,即,僅將這些節點的更新信息發送給客戶端設備。

通過以上描述可以看出,本申請實施例中,網絡側接收到客戶端設備發送的數據同步請求後,獲取網絡側存儲的對應的文件樹,確定數據同步方式,並根據確定出的數據同步方式確定需要待同步給客戶端設備的節點,並客戶端設備發送數據同步命令,使客戶端設備根據該數據同步命令進行數據同步。其中,如果確定出的數據同步方式為差量更新,則根據該同步方式確定出的待同步給客戶端設備的節點僅為文件樹中的部分節點,因此與現有技術中根據文件樹的全部節點進行全量同步的方式相比,可以提高數據同步效率。

基於相同的技術構思,本申請實施例還提供了一種數據同步裝置,可用於前述數據同步流程,比如圖8所示的流程。該數據同步裝置可以是網絡側用於文件同步的伺服器,也可以是該伺服器中的用於實現文件同步的功能模塊。

參見圖10,為本申請實施例提供的數據同步裝置的結構示意圖,該裝置可包括:接收模塊1001、獲取模塊1002、確定模塊1003以及發送模塊1004,其 中:

接收模塊1001,用於接收客戶端設備發送的數據同步請求,所述數據同步請求中包括文件樹索引信息;

獲取模塊1002,用於根據所述文件樹索引信息,獲取網絡側存儲的與所述文件樹索引信息對應的第一文件樹;

確定模塊1003,用於確定所述第一文件樹上待同步給所述客戶端設備的節點,一個文件樹中除根節點以外的每個節點對應的一個文件或文件夾;

發送模塊1004,用於根據確定出的待同步給所述客戶端設備的節點,向所述客戶端設備發送數據同步命令,所述數據同步命令用於指示所述客戶端設備對所述客戶端設備存儲的與所述文件樹索引信息對應的第二文件樹進行更新。

優選地,確定模塊1003可具體用於:確定數據同步方式,所確定的數據同步方式包括全量更新或差量更新;根據確定的同步方式,確定所述第一文件樹上待同步給所述客戶端設備的節點。

優選地,所述數據同步請求中還包括與所述文件樹索引信息對應的第二文件樹的版本號;第一文件樹以及所述第二文件樹中,根節點的版本號與除根節點以外的其它所有節點中的最大版本號相同,文件樹的版本號與該文件樹的根節點的版本號相同;當文件樹中的一個節點更新時,該節點的版本號遞增。

優選地,確定模塊1003可具體用於:確定所述第一文件樹中的有效節點數,其中,一個文件樹上的有效節點是指該文件樹上除被標記為已刪除節點之外的所有節點;確定所述第一文件樹與所述第二文件樹的差量節點數,其中,所述第一文件樹與所述第二文件樹的差量節點是指所述第一文件樹上版本號大於所述第二文件樹的版本號的節點;若所述差量節點數大於或等於所述有效節點數的n倍,則確定採用全量更新,否則確定採用差量更新,n≥1。

優選地,數據同步請求中還包括同步方式指示信息,所述同步方式指示信息所指示的同步方式包括全量更新或差量更新;相應地,確定模塊1003可具體用於:根據所述數據同步請求中包括的同步方式指示信息,確定數據同步方 式。

其中,若所述同步方式指示信息為全量更新指示信息,則所述全量更新指示信息是所述客戶端設備在根據接收到的數據同步命令進行文件樹同步操作失敗後,攜帶於所述數據同步請求中的。

優選地,確定模塊1003可具體用於:

若確定出的同步方式為全量更新,則將所述第一文件樹上的有效節點確定為待同步給所述客戶端設備的節點;其中,一個文件樹上的有效節點是指該文件樹上除被標記為已刪除節點之外的所有節點;或者

若確定出的同步方式為差量更新,則將所述第一文件樹與所述第二文件樹的差量節點確定為待同步給所述客戶端設備的節點,其中,所述第一文件樹與所述第二文件樹的差量節點是指所述第一文件樹上版本號大於所述第二文件樹的版本號的節點。

優選地,發送模塊1004可具體用於:

根據確定出的所述第一文件樹上待同步給所述客戶端設備的節點,以及分頁大小參數,確定總分頁頁數,以及每頁對應的節點的更新信息;其中,所述分頁大小參數用節點數量表示,一個分頁對應的節點數量等於所述分頁大小參數;

根據分頁順序,向所述客戶端設備發送數據同步命令,其中攜帶當前分頁對應的節點的更新信息、當前分頁的頁號以及總分頁頁數。

優選地,接收模塊1001還可用於:在發送模塊1004根據分頁順序,向所述客戶端設備發送數據同步命令之後,接收所述客戶端設備再次發送的數據同步請求,其中攜帶有所請求的分頁的頁號;發送模塊1004還用於:根據所述客戶端設備再次發送的數據同步請求中攜帶的分頁頁號,獲取對應分頁所對應的節點的更新信息,向所述客戶端設備發送數據同步命令,其中攜帶有當前分頁對應的節點的更新信息、當前分頁的頁號以及總分頁頁數。

優選地,發送模塊1004還可用於:

若在向所述客戶端設備發送數據同步命令後,所述第一文件樹的版本號發生更新,則將更新後的所述第一文件樹上,版本號大於所述第一文件樹更新前的版本號的節點的更新信息,發送給所述客戶端設備;或者

向所述客戶端設備發送通知消息,所述通知消息用於通知所述第一文件樹的版本號發生更新並徵詢所述客戶端設備是否發起數據同步請求;其中,所述通知消息中包括所述第一文件樹更新後的版本號。

基於相同的技術構思,本申請實施例還提供了一種數據更新裝置,該裝置可以執行前述實施例描述的數據更新流程,比如圖2所示的流程。該裝置可以是客戶端設備、也可以是網絡側用於實現文件同步的伺服器,或者是該客戶端設備或伺服器中實現文件更新和同步的功能模塊。

參見圖11,為本申請實施例提供的數據更新裝置的結構示意圖,如圖所示,該裝置可包括:接收模塊1101、獲取模塊1102、更新模塊1103,其中:

接收模塊1101,用於接收數據同步命令,所述數據同步命令中包括文件樹索引信息以及節點的更新信息;其中,一個文件樹中除根節點以外的每個節點對應一個文件或文件夾;

獲取模塊1102,用於根據所述文件樹索引信息,獲取對應的待同步的文件樹;

更新模塊1103,用於根據所述數據同步命令中包括的節點的更新信息,更新所述待同步的文件樹;其中,一個文件樹中,根節點的版本號與除根節點以外的其他所有節點中的最大版本號相同,文件樹的版本號與該文件樹的根節點的版本號相同,當文件樹中的一個節點更新時,該節點的版本號遞增。

優選地,所述節點的更新信息包括:待修改文件名稱的節點的在文件樹中的位置信息以及修改後的文件名。相應地,更新模塊1103可具體用於:根據所述待修改文件名稱的節點的位置信息,將所述待同步的文件樹上相應節點的版本號加1,並更新該文件樹的版本號;根據修改後的文件名稱,更新節點與文件的關聯關係中所述待修改文件名稱的節點所對應的文件的名稱。

優選地,所述節點的更新信息包括:待修改文件夾名稱的節點在文件樹中的位置信息以及修改後的文件夾名稱。相應地,更新模塊1103可具體用於:根據所述待修改文件夾名稱的節點的位置信息,將所述待同步的文件樹上相應節點的版本號加1;若所述待修改文件夾名稱的節點下包含子節點,則分別更新所述待修改文件夾名稱的節點下的所有子節點的版本號;其中,對於每個子節點,更新該子節點的版本號時,在該子節點當前的版本號上加上該子節點的父節點的版本差,所述父節點的版本差為該父節點更新後的版本號與更新前的版本號之差;更新所述待同步的文件樹的版本號;根據修改後的文件夾名稱,更新節點與文件夾的關聯關係中,所述待修改文件夾名稱的節點所對應的文件夾的名稱。

優選地,所述節點的更新信息包括:待刪除的節點在文件樹中的位置信息。相應地,更新模塊1103可具體用於:根據所述待刪除的節點的位置信息,在所述待同步的文件樹上將相應節點標記為刪除;將所述被標記為刪除的節點的版本號加1,並更新所述待同步的文件樹的版本號。

優選地,所述節點的更新信息包括:待刪除的節點在文件樹中的位置信息。相應地,更新模塊1103可具體用於:根據所述待刪除的節點的位置信息,在所述待同步的文件樹上將相應節點標記為刪除,以及將所述被標記為刪除的節點的所有子節點標記為刪除;分別將所述標記為刪除的節點的版本號加1,並更新所述待同步的文件樹的版本號。

優選地,所述節點的更新信息包括:新增加的節點在文件樹中的位置信息以及所述新增加的節點所對應的文件。相應地,更新模塊1103可具體用於:根據所述新增加的節點的位置信息,在所述待同步的文件樹上增加節點;將新增加的節點的版本號設置為所述待同步的文件樹的版本號加1,並更新所述待同步的文件樹的版本號;存儲所述新增加的節點所對應的文件,建立所述新增加的節點與該節點所對應的文件的關聯關係。

優選地,所述節點的更新信息包括:新增加的節點在文件樹中的位置信息 以及所述新增加的節點所對應的文件夾。相應地,更新模塊1103可具體用於:根據所述新增加的節點的位置信息,在所述待同步的文件樹上增加節點;將新增加的節點的版本號設置為所述待同步的文件樹的版本號加1,並更新所述待同步的文件樹的版本號;建立所述新增加的節點與該節點所對應的文件夾的關聯關係。

基於相同的技術構思,本申請實施例還提供了一種伺服器。

參見圖12,為本申請實施例提供的伺服器的結構示意圖,如圖所示,該伺服器可包括:接口1201、處理單元1202和存儲器1203。處理單元1202用於控制該裝置的操作;存儲器1203可以包括只讀存儲器和隨機存取存儲器,用於向處理單元1202提供指令和數據。存儲器1203的一部分還可以包括非易失行隨機存取存儲器(NVRAM)。該裝置的各個組件通過總線系統耦合在一起,其中總線系統1209除包括數據總線之外,還包括電源總線、控制總線和狀態信號總線。但是為了清楚說明起見,在圖中將各種總線都標為總線系統1209。

本發明實施例揭示的數據同步流程可以應用於處理單元1202中,或者由處理單元1202實現。在實現過程中,該裝置實現的數據同步流程的各步驟可以通過處理單元1202中的硬體的集成邏輯電路或者軟體形式的指令完成。處理單元1202可以是通用處理器、數位訊號處理器、專用集成電路、現場可編程門陣列或者其他可編程邏輯器件、分立門或者電晶體邏輯器件、分立硬體組件,可以實現或者執行本發明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者任何常規的處理器等。結合本發明實施例所公開的方法的步驟可以直接體現為硬體處理器執行完成,或者用處理器中的硬體及軟體模塊組合執行完成。軟體模塊可以位於隨機存儲器,快閃記憶體、只讀存儲器,可編程只讀存儲器或者電可擦寫可編程存儲器、寄存器等本領域成熟的存儲介質中。該存儲介質位於存儲器1203,處理單元1202讀取存儲器1203中的信息,結合其硬體完成數據同步流程的步驟。

具體地,處理單元1202可被配置以執行前述實施例所述的數據同步流程。 該流程的具體實現過程可參見前述圖8所示的流程,在此不再重複。

基於相同的技術構思,本發明實施例還提供了一種設備。該設備可以是客戶端設備也可以是伺服器,可實現前述實施例提供的數據更新流程。

參見圖13,為本申請實施例提供的設備的結構示意圖,如圖所示,該設備可包括:接口1301、處理單元1302和存儲器1303。處理單元1302用於控制該裝置的操作;存儲器1303可以包括只讀存儲器和隨機存取存儲器,用於向處理單元1302提供指令和數據。存儲器1303的一部分還可以包括非易失行隨機存取存儲器(NVRAM)。該裝置的各個組件通過總線系統耦合在一起,其中總線系統1309除包括數據總線之外,還包括電源總線、控制總線和狀態信號總線。但是為了清楚說明起見,在圖中將各種總線都標為總線系統1309。

本發明實施例揭示的數據更新流程可以應用於處理單元1302中,或者由處理單元1302實現。在實現過程中,該裝置實現的數據更新流程的各步驟可以通過處理單元1302中的硬體的集成邏輯電路或者軟體形式的指令完成。處理單元1302可以是通用處理器、數位訊號處理器、專用集成電路、現場可編程門陣列或者其他可編程邏輯器件、分立門或者電晶體邏輯器件、分立硬體組件,可以實現或者執行本發明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者任何常規的處理器等。結合本發明實施例所公開的方法的步驟可以直接體現為硬體處理器執行完成,或者用處理器中的硬體及軟體模塊組合執行完成。軟體模塊可以位於隨機存儲器,快閃記憶體、只讀存儲器,可編程只讀存儲器或者電可擦寫可編程存儲器、寄存器等本領域成熟的存儲介質中。該存儲介質位於存儲器1303,處理單元1302讀取存儲器1303中的信息,結合其硬體完成數據更新流程的步驟。

具體地,處理單元1302可被配置以執行前述實施例所述的數據更新流程。該流程的具體實現過程可參見前述圖2所示的流程,在此不再重複。

本申請是參照根據本申請實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和 /或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

儘管已描述了本申請的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本申請範圍的所有變更和修改。

顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和範圍。這樣,倘若本申請的這些修改和變型屬於本申請權利要求及其等同技術的範圍之內,則本申請也意圖包含這些改動和變型在內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀