中,切分模塊402還可以進一步用于選取滿足
丨,的使同步時間最短的方案為切塊方案,其中:
[0104] 為終端的處理開銷列表中第i套切塊方案對處理數(shù)據(jù)量為C的數(shù)據(jù)進行切塊的 處理時間;
[0105] P i為終端的冗余消除能力列表中第i套切塊方案的冗余率;
[0106] IndeX_siZei為第i套切塊方案所產(chǎn)生的索引信息的數(shù)據(jù)量。
[0107] 實施中,還可以進一步包括:
[0108] 數(shù)據(jù)塊設(shè)置模塊406,用于設(shè)置數(shù)據(jù)塊包括虛實位部分、位置信息部分、以及數(shù)據(jù) 內(nèi)容部分以用于表明數(shù)據(jù)塊狀態(tài),其中:
[0109] 虛實位部分,用于表示所述數(shù)據(jù)塊是否包含真實數(shù)據(jù);
[0110] 位置信息部分,用于表示當(dāng)前數(shù)據(jù)塊在原文件中的偏移量以及當(dāng)前數(shù)據(jù)塊的長 度;
[0111] 數(shù)據(jù)內(nèi)容部分,用于存放當(dāng)前數(shù)據(jù)塊中的真實數(shù)據(jù)。
[0112] 圖5為本發(fā)明實施例中服務(wù)器文件同步方法實施的流程示意圖,如圖所示,可以 包括步驟:
[0113] 步驟501、接收終端發(fā)送的多個標(biāo)識符,所述多個標(biāo)識符分別與多個數(shù)據(jù)塊一一對 應(yīng),所述數(shù)據(jù)塊是終端根據(jù)切塊方案對待同步文件進行切分得到的;
[0114] 步驟502、將所述多個標(biāo)識符分別與服務(wù)器中的標(biāo)識符進行比較,所述服務(wù)器中 的標(biāo)識符分別與服務(wù)器中的多個數(shù)據(jù)塊一一對應(yīng),所述服務(wù)器中的多個數(shù)據(jù)塊是服務(wù)器根 據(jù)切塊方案對服務(wù)器中存儲的文件進行切分得到的,所述切塊方案與終端側(cè)的切塊方案相 同;
[0115] 步驟503、確定所述多個標(biāo)識符對應(yīng)的數(shù)據(jù)塊是否存在于服務(wù)器中;
[0116] 步驟504、將確走結(jié)果反饋至終立而;
[0117] 步驟505、根據(jù)終端的同步得到同步文件。
[0118] 具體實施中,在接收終端發(fā)送的多個標(biāo)識符之前,服務(wù)器中存儲的文件均已按照 與終端側(cè)相同的切塊方案切分為數(shù)據(jù)塊并創(chuàng)建了與數(shù)據(jù)塊一一對應(yīng)的標(biāo)識符。在接收到終 端發(fā)送的多個標(biāo)志符后,將終端發(fā)送的標(biāo)識符與服務(wù)器中的標(biāo)識符進行比較,確定有哪些 標(biāo)識符是服務(wù)器中沒有的,進而確定這些服務(wù)器中不存在的數(shù)據(jù)塊,將不存在于服務(wù)器中 的數(shù)據(jù)塊對應(yīng)的標(biāo)識符反饋至終端,終端按照反饋同步文件。通過增加了標(biāo)識符比較的步 驟,能夠在待同步文件中的部分數(shù)據(jù)塊已存在于服務(wù)器中時,僅上傳服務(wù)器中未保存的數(shù) 據(jù)塊而得到同步文件,這樣的方式大大的減少了傳輸過程中需要傳送的數(shù)據(jù)量,從而降低 網(wǎng)絡(luò)開銷。
[0119] 實施中,在將確定結(jié)果反饋至終端時,若所述多個標(biāo)識符對應(yīng)的數(shù)據(jù)塊中有數(shù)據(jù) 塊未存在于服務(wù)器,則可以將未存在于服務(wù)器中的數(shù)據(jù)塊對應(yīng)的標(biāo)識符反饋至終端;
[0120] 若所述多個標(biāo)識符對應(yīng)的數(shù)據(jù)塊均已存在于服務(wù)器,則反饋空集至終端。
[0121] 具體實施中,假如終端選擇使用i方案進行切塊,當(dāng)終端將切分的數(shù)據(jù)塊對應(yīng)的 標(biāo)識符發(fā)送至服務(wù)器,服務(wù)端接收到終端按照i方案切塊所產(chǎn)生的標(biāo)識符集合之后,可以 到i方案下的標(biāo)識符數(shù)據(jù)庫(所謂標(biāo)識符數(shù)據(jù)庫,可以理解成為服務(wù)器上已經(jīng)存儲的數(shù)據(jù), 切塊以后,所有的數(shù)據(jù)塊的標(biāo)識符都存在于這個數(shù)據(jù)庫中)中去尋找。本發(fā)明實施例中可 以不到其它切塊方案的標(biāo)識符數(shù)據(jù)庫中尋找。
[0122] 服務(wù)器進行比對后確定有部分或全部數(shù)據(jù)塊需要上傳時,反饋需要上傳的數(shù)據(jù)塊 對應(yīng)的標(biāo)識符至終端,終端將這些標(biāo)識符對應(yīng)的數(shù)據(jù)塊同步至服務(wù)器,服務(wù)器整合同步的 數(shù)據(jù)塊與待同步文件夾中已存在于服務(wù)器中的數(shù)據(jù)塊而得到同步文件;
[0123] 若服務(wù)器進行比對后確定待上傳文件切分得到的數(shù)據(jù)塊都已存在于服務(wù)器,此 時,終端不需要將數(shù)據(jù)塊上傳至服務(wù)器,服務(wù)器將待同步文件已存在于其上的數(shù)據(jù)塊進行 得到同步文件。
[0124] 不論是上傳待同步文件的部分數(shù)據(jù)塊、全部數(shù)據(jù)塊、抑或不需要上傳任何數(shù)據(jù)塊, 在服務(wù)器側(cè)都能夠得到同步文件,實現(xiàn)終端側(cè)與服務(wù)器側(cè)的文件的同步。
[0125] 實施中,數(shù)據(jù)塊可以與終端的數(shù)據(jù)塊相同,可以包括虛實位部分、位置信息部分、 以及數(shù)據(jù)內(nèi)容部分,其中:
[0126] 虛實位部分,用于表示所述數(shù)據(jù)塊是否包含真實數(shù)據(jù);
[0127] 位置信息部分,用于表示當(dāng)前數(shù)據(jù)塊在原文件中的偏移量以及當(dāng)前數(shù)據(jù)塊的長 度;
[0128] 數(shù)據(jù)內(nèi)容部分,用于存放當(dāng)前數(shù)據(jù)塊中的真實數(shù)據(jù)。
[0129] 實施中,在根據(jù)終端的同步得到同步文件時,可以根據(jù)接收到的標(biāo)識符與數(shù)據(jù)塊 結(jié)構(gòu)將同步至服務(wù)器的數(shù)據(jù)塊和/或已存在于服務(wù)器的數(shù)據(jù)塊進行整合,得到同步文件。
[0130] 實施中,在服務(wù)器得到同步文件之后,可以進一步包括:按照與終端上相同的切塊 方案列表中未被選取的切塊方案對所述同步文件進行二次切分,并針對所述多個數(shù)據(jù)塊中 的每一個分別創(chuàng)建標(biāo)識符。
[0131] 具體實施中,每當(dāng)有用戶數(shù)據(jù)被同步到云端,服務(wù)器對新上傳的文件按照切塊方 案列表中的其它方案對文件進行二次切分,并創(chuàng)建索引。二次切分的目的在于確保下一個 待同步文件不論采用何種切分方案進行切分,服務(wù)器都能保證有效的比較數(shù)據(jù)塊對應(yīng)的標(biāo) 識符,進而傳輸最少的數(shù)據(jù)來實現(xiàn)文件同步。
[0132] 實施中,在服務(wù)器對同步文件按照切塊方案列表中未被選取的切塊方案進行二次 切分后,可以設(shè)置所述二次切分獲得的多個數(shù)據(jù)塊中每一個數(shù)據(jù)塊的虛實位部分為不包含 真實數(shù)據(jù)、數(shù)據(jù)內(nèi)容部分為空。
[0133] 具體實施中,二次切分產(chǎn)生的數(shù)據(jù)塊虛實位可以標(biāo)記為0,也就是不需要存儲這些 塊的實際內(nèi)容,避免了保存同一個文件在多套切塊方案下的多個備份,節(jié)約的存儲空間。
[0134] 實施中,在接收終端發(fā)送的多個標(biāo)識符之前,可以進一步包括:確定服務(wù)器上已保 存的文件都已按照與終端上相同的切塊方案列表中的所有切塊方案切分成多個數(shù)據(jù)塊,并 已針對所述多個數(shù)據(jù)塊中的每一個分別創(chuàng)建標(biāo)識符。
[0135] 具體實施中,終端和服務(wù)器上分別事先維護一個相同的切塊方案列表chunking_ list = {lp 12, 13,…,1J,其中h代表第i套切塊方案的平均切塊大小,在終端選取切塊 方案后,可以將已經(jīng)選取該切塊方案的消息告知服務(wù)器,服務(wù)器進行二次切分的時候,選擇 該切塊方案以外的其他方案進行切分;也可以終端將標(biāo)識符發(fā)送至服務(wù)器后,服務(wù)器根據(jù) 標(biāo)識符判斷終端選取的是哪個切塊方案,進而選擇該切塊方案以外的其他方案進行切分, 除上述兩種方式外,本發(fā)明實施例中不限制采用其他方式使服務(wù)器知曉終端選取的切塊方 案。
[0136] 基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種服務(wù)器文件同步的裝置,由于 裝置解決問題的原理與一種服務(wù)器文件同步的方法似,因此裝置的實施可以參見方法的實 施,重復(fù)之處不再贅述。
[0137] 圖6為本發(fā)明實施例中服務(wù)器文件同步的裝置的結(jié)構(gòu)示意圖,如圖所示,可以包 括:
[0138] 接收模塊601,用于接收終端發(fā)送的多個標(biāo)識符,所述多個標(biāo)識符分別與多個數(shù)據(jù) 塊一一對應(yīng),所述數(shù)據(jù)塊是終端根據(jù)切塊方案對待同步文件進行切分得到的;
[0139] 比較模塊602,用于將所述多個標(biāo)識符分別與服務(wù)器中的標(biāo)識符進行比較,所述服 務(wù)器中的標(biāo)識符分別與服務(wù)器中的多個數(shù)據(jù)塊一一對應(yīng),所述服務(wù)器中的多個數(shù)據(jù)塊是服 務(wù)器根據(jù)切塊方案對服務(wù)器中存儲的文件進行切分得到的,所述切塊方案與終端側(cè)的切塊 方案相同;
[0140] 確定模塊603,用于確定所述多個標(biāo)識符對應(yīng)的數(shù)據(jù)塊是否存在于服務(wù)器中;
[0141] 反饋模塊604,用于將確定結(jié)果反饋至終端;
[0142] 文件同步模塊605,用于根據(jù)終端的同步得到同步文件。
[0143] 實施中,反饋模塊604在將確定結(jié)果反饋至終端時,若所述多個標(biāo)識符對應(yīng)的數(shù) 據(jù)塊中有數(shù)據(jù)塊未存在于服務(wù)器,則可以將未存在于服務(wù)器中的數(shù)據(jù)塊對應(yīng)的標(biāo)識符反饋 至終端;
[0144] 若所述多個標(biāo)識符對應(yīng)的數(shù)據(jù)塊均已存在于服務(wù)器,則反饋空集至終端。
[0145] 實施中,還可以包括:數(shù)據(jù)塊設(shè)置模塊606,用于設(shè)置數(shù)據(jù)塊包括虛實位部分、位 置信息部分、以及數(shù)據(jù)內(nèi)容部分以用于表明數(shù)據(jù)塊狀態(tài),其中:
[0146] 虛實位部分,用于表示所述數(shù)據(jù)塊是否包含真實數(shù)據(jù);
[0147] 位置信息部分,用于表示當(dāng)前數(shù)據(jù)塊在原文件中的偏移量以及當(dāng)前數(shù)據(jù)塊的長 度;
[0148] 數(shù)據(jù)內(nèi)容部分,用于存放當(dāng)前數(shù)據(jù)塊中的真實數(shù)據(jù)。
[0149