文件同步方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種文件同步方法和裝置,屬于云存儲(chǔ)【技術(shù)領(lǐng)域】。所述方法應(yīng)用于電子設(shè)備中,包括:通過所述電子設(shè)備獲取第一事件集和第二事件集,所述第一事件集包括服務(wù)器中的文件發(fā)生的事件,所述第二事件集包括終端設(shè)備中的文件發(fā)生的事件,文件發(fā)生的事件包括增事件和減事件中的至少一項(xiàng);當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步。本發(fā)明通過將文件發(fā)生的事件分為增事件和減事件兩種,減少了冗余事件的發(fā)生,在根據(jù)該第一事件集和該第二事件集對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步時(shí),極大地降低了沖突事件發(fā)生的概率,提高了文件同步的效率。
【專利說明】文件同步方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云存儲(chǔ)【技術(shù)領(lǐng)域】,特別涉及一種文件同步方法和裝置。
【背景技術(shù)】
[0002]隨著云存儲(chǔ)技術(shù)的發(fā)展,云存儲(chǔ)的同步應(yīng)用得到了廣泛的使用。云存儲(chǔ)的同步應(yīng)用可以使用基于差異的判定方法,得到一段時(shí)間內(nèi)服務(wù)器的文件的差異,并采用event (事件)或changelog (日志)的方式,將文件的差異以事件的方式保存在服務(wù)器。在對(duì)服務(wù)器和終端設(shè)備的文件進(jìn)行同步時(shí),服務(wù)器將發(fā)生的事件發(fā)送給終端設(shè)備,以事件驅(qū)動(dòng)的方式提示終端設(shè)備對(duì)文件進(jìn)行處理,使得終端設(shè)備的文件和服務(wù)器的文件達(dá)到同步。
[0003]其中,對(duì)于服務(wù)器和多個(gè)終端設(shè)備,可能會(huì)出現(xiàn)以下情況:(I)服務(wù)器新下載了文件A,而終端設(shè)備刪除了文件A ; (2)終端設(shè)備I修改了文件B,終端設(shè)備2也修改了文件B ;
[3]終端設(shè)備I新下載了文件C,而終端設(shè)備2刪除了文件C等等。當(dāng)發(fā)生上述沖突事件或類似事件時(shí),需要在保證用戶的數(shù)據(jù)安全的前提下,判斷如何對(duì)服務(wù)器和多個(gè)終端設(shè)備中的文件進(jìn)行處理,以使得服務(wù)器和多個(gè)終端設(shè)備中的文件同步。
[0004]但是,一個(gè)文件可能會(huì)發(fā)生多個(gè)冗余的事件,如A.txt被刪除之前的創(chuàng)建A.txt的事件和修改A.txt的事件均可以看作冗余事件。由于文件可能發(fā)生多個(gè)冗余的事件,使得發(fā)生沖突事件的概率增大,則終端設(shè)備需要針對(duì)多個(gè)冗余事件進(jìn)行判斷,耗費(fèi)的時(shí)間過長,降低了文件同步的效率。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種文件同步方法和裝置。所述技術(shù)方案如下:
[0006]第一方面,提供了一種文件同步方法,應(yīng)用于電子設(shè)備中,所述方法包括:
[0007]通過所述電子設(shè)備獲取第一事件集和第二事件集,所述第一事件集包括服務(wù)器中的文件發(fā)生的事件,所述第二事件集包括終端設(shè)備中的文件發(fā)生的事件,文件發(fā)生的事件包括增事件和減事件中的至少一項(xiàng);
[0008]當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步。
[0009]通過所述電子設(shè)備獲取第一事件集和第二事件集包括:
[0010]當(dāng)所述電子設(shè)備檢測到所述服務(wù)器中的第一文件發(fā)生變化時(shí),獲取所述第一文件的變化類型,文件的變化類型包括創(chuàng)建、刪除和修改;
[0011]根據(jù)所述第一文件的變化類型,確定所述第一文件發(fā)生的事件;
[0012]獲取所述服務(wù)器中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第一事件集。
[0013]通過所述電子設(shè)備獲取第一事件集和第二事件集包括:
[0014]當(dāng)所述電子設(shè)備檢測到所述終端設(shè)備中的第二文件發(fā)生變化時(shí),獲取所述第二文件的變化類型;[0015]根據(jù)所述第二文件的變化類型,確定所述第二文件發(fā)生的事件;
[0016]獲取所述終端設(shè)備中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第二事件集。
[0017]當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步包括:
[0018]當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,確定執(zhí)行事件集,所述執(zhí)行事件集包括所述服務(wù)器和所述終端設(shè)備中的文件待執(zhí)行的事件;
[0019]根據(jù)所述執(zhí)行事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行處理,使得所述服務(wù)器中的文件與所述終端設(shè)備中的文件同步。
[0020]當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步包括:
[0021]當(dāng)所述第一文件和所述第二文件為相同的文件,且所述第一事件集包括所述第一文件發(fā)生的第一事件,所述第二事件集包括所述第二文件發(fā)生的第二事件時(shí),根據(jù)所述第一事件和所述第二事件,分別對(duì)所述第一文件和所述第二文件進(jìn)行處理,使得所述第一文件和所述第二文件同步。
[0022]根據(jù)所述第一事件和所述第二事件,分別對(duì)所述第一文件和所述第二文件進(jìn)行處理,使得所述第一文件和所述第二文件同步包括:
[0023]當(dāng)所述第一事件和所述第二事件均為增事件時(shí),將所述第二文件重新命名,并將所述第一文件下載至所述終端設(shè)備,將重命名后的第二文件上傳至所述服務(wù)器;或,
[0024]當(dāng)所述第一事件和所述第二事件均為增事件時(shí),將所述第一文件重新命名,并將重命名后的第一文件下載至所述終端設(shè)備,將所述第二文件上傳至所述服務(wù)器;或,
[0025]當(dāng)所述第一事件為增事件,且所述第二事件為減事件時(shí),將所述第一文件下載至所述終端設(shè)備;或,
[0026]當(dāng)所述第一事件為減事件,且所述第二事件為增事件時(shí),將所述第二文件上傳至所述服務(wù)器;或,
[0027]當(dāng)所述第一事件和所述第二事件均為減事件時(shí),將所述第一文件和所述第二文件刪除。
[0028]所述方法還包括:
[0029]當(dāng)確定需要將所述第二文件上傳至所述服務(wù)器時(shí),獲取所述第二文件的哈希值;
[0030]判斷所述服務(wù)器中是否存在哈希值與所述第二文件的哈希值相同的文件;
[0031]如果是,根據(jù)所述第二文件的信息,對(duì)所述服務(wù)器中哈希值與所述第二文件的哈希值相同的文件的信息進(jìn)行修改;
[0032]如果否,將所述第二文件上傳至所述服務(wù)器。
[0033]第二方面,提供了一種文件同步裝置,應(yīng)用于電子設(shè)備中,所述裝置包括:
[0034]事件集獲取模塊,用于獲取第一事件集和第二事件集,所述第一事件集包括服務(wù)器中的文件發(fā)生的事件,所述第二事件集包括終端設(shè)備中的文件發(fā)生的事件,文件發(fā)生的事件包括增事件和減事件中的至少一項(xiàng);
[0035]同步模塊,用于當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步。
[0036]所述事件集獲取模塊包括:[0037]第一變化獲取單元,用于當(dāng)所述電子設(shè)備檢測到所述服務(wù)器中的第一文件發(fā)生變化時(shí),獲取所述第一文件的變化類型,文件的變化類型包括創(chuàng)建、刪除和修改;
[0038]第一事件獲取單元,用于根據(jù)所述第一文件的變化類型,確定所述第一文件發(fā)生的事件;
[0039]第一事件集獲取單元,用于獲取所述服務(wù)器中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第一事件集。
[0040]所述事件集獲取模塊包括:
[0041]第二變化獲取單元,用于當(dāng)所述電子設(shè)備檢測到所述終端設(shè)備中的第二文件發(fā)生變化時(shí),獲取所述第二文件的變化類型;
[0042]第二事件獲取單元,用于根據(jù)所述第二文件的變化類型,確定所述第二文件發(fā)生的事件;
[0043]第二事件集獲取單元,用于獲取所述終端設(shè)備中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第二事件集。
[0044]所述同步模塊包括:
[0045]執(zhí)行事件集確定單元,用于當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,確定執(zhí)行事件集,所述執(zhí)行事件集包括所述服務(wù)器和所述終端設(shè)備中的文件待執(zhí)行的事件;
[0046]第一同步單元,用于根據(jù)所述執(zhí)行事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行處理,使得所述服務(wù)器中的文件與所述終端設(shè)備中的文件同步。
[0047]所述同步模塊包括:
[0048]第二同步單元,用于當(dāng)所述第一文件和所述第二文件為相同的文件,且所述第一事件集包括所述第一文件發(fā)生的第一事件,所述第二事件集包括所述第二文件發(fā)生的第二事件時(shí),根據(jù)所述第一事件和所述第二事件,分別對(duì)所述第一文件和所述第二文件進(jìn)行處理,使得所述第一文件和所述第二文件同步。
[0049]所述第二同步單元用于當(dāng)所述第一事件和所述第二事件均為增事件時(shí),將所述第二文件重新命名,并將所述第一文件下載至所述終端設(shè)備,將重命名后的第二文件上傳至所述服務(wù)器;或,當(dāng)所述第一事件和所述第二事件均為增事件時(shí),將所述第一文件重新命名,并將重命名后的第一文件下載至所述終端設(shè)備,將所述第二文件上傳至所述服務(wù)器;或,當(dāng)所述第一事件為增事件,且所述第二事件為減事件時(shí),將所述第一文件下載至所述終端設(shè)備;或,當(dāng)所述第一事件為減事件,且所述第二事件為增事件時(shí),將所述第二文件上傳至所述服務(wù)器;或,當(dāng)所述第一事件和所述第二事件均為減事件時(shí),將所述第一文件和所述第二文件刪除。
[0050]所述裝置還包括:
[0051]哈希值獲取模塊,用于當(dāng)確定需要將所述第二文件上傳至所述服務(wù)器時(shí),獲取所述第二文件的哈希值;
[0052]判斷模塊。用于判斷所述服務(wù)器中是否存在哈希值與所述第二文件的哈希值相同的文件;
[0053]信息修改模塊,用于當(dāng)所述服務(wù)器中存在哈希值與所述第二文件的哈希值相同的文件,根據(jù)所述第二文件的信息,對(duì)所述服務(wù)器中哈希值與所述第二文件的哈希值相同的文件的信息進(jìn)行修改;
[0054]上傳模塊,用于當(dāng)所述服務(wù)器中不存在哈希值與所述第二文件的哈希值相同的文件,將所述第二文件上傳至所述服務(wù)器。
[0055]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0056]本發(fā)明實(shí)施例提供的方法和裝置,通過將文件發(fā)生的事件分為增事件和減事件兩種,并通過電子設(shè)備獲取服務(wù)器中文件發(fā)生的事件和終端設(shè)備中文件發(fā)生的事件,分別組成第一事件集和第二事件集,減少了冗余事件的發(fā)生,在根據(jù)該第一事件集和該第二事件集對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步時(shí),極大地降低了沖突事件發(fā)生的概率,提高了文件同步的效率。
【專利附圖】
【附圖說明】
[0057]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0058]圖1是本發(fā)明實(shí)施例提供的一種文件同步方法的流程圖;
[0059]圖2是本發(fā)明實(shí)施例提供的一種文件同步方法的流程圖;
[0060]圖3是本發(fā)明實(shí)施例提供的一種文件同步裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0061]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0062]圖1是本發(fā)明實(shí)施例提供的一種文件同步方法的流程圖。該方法應(yīng)用于電子設(shè)備中,參見圖1,該方法包括:
[0063]101、通過該電子設(shè)備獲取第一事件集和第二事件集,該第一事件集包括服務(wù)器中的文件發(fā)生的事件,該第二事件集包括終端設(shè)備中的文件發(fā)生的事件,文件發(fā)生的事件包括增事件和減事件中的至少一項(xiàng)。
[0064]102、當(dāng)接收到同步指令時(shí),根據(jù)該第一事件集和該第二事件集,對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步。
[0065]本發(fā)明實(shí)施例提供的方法,通過將文件發(fā)生的事件分為增事件和減事件兩種,并通過電子設(shè)備獲取服務(wù)器中文件發(fā)生的事件和終端設(shè)備中文件發(fā)生的事件,分別組成第一事件集和第二事件集,減少了冗余事件的發(fā)生,在根據(jù)該第一事件集和該第二事件集對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步時(shí),極大地降低了沖突事件發(fā)生的概率,提高了文件同步的效率。
[0066]可選地,通過該電子設(shè)備獲取第一事件集和第二事件集包括:
[0067]當(dāng)該電子設(shè)備檢測到該服務(wù)器中的第一文件發(fā)生變化時(shí),獲取該第一文件的變化類型,文件的變化類型包括創(chuàng)建、刪除和修改;[0068]根據(jù)該第一文件的變化類型,確定該第一文件發(fā)生的事件;
[0069]獲取該服務(wù)器中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到該第一事件集。
[0070]可選地,通過該電子設(shè)備獲取第一事件集和第二事件集包括:
[0071]當(dāng)該電子設(shè)備檢測到該終端設(shè)備中的第二文件發(fā)生變化時(shí),獲取該第二文件的變化類型;
[0072]根據(jù)該第二文件的變化類型,確定該第二文件發(fā)生的事件;
[0073]獲取該終端設(shè)備中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到該第二事件集。
[0074]可選地,當(dāng)接收到同步指令時(shí),根據(jù)該第一事件集和該第二事件集,對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步包括:
[0075]當(dāng)接收到同步指令時(shí),根據(jù)該第一事件集和該第二事件集,確定執(zhí)行事件集,該執(zhí)行事件集包括該服務(wù)器和該終端設(shè)備中的文件待執(zhí)行的事件;
[0076]根據(jù)該待執(zhí)行事件集,對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行處理,使得該服務(wù)器中的文件與該終端設(shè)備中的文件同步。
[0077]可選地,當(dāng)接收到同步指令時(shí),根據(jù)該第一事件集和該第二事件集,對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步包括: [0078]當(dāng)該第一文件和該第二文件為相同的文件,且該第一事件集包括該第一文件發(fā)生的第一事件,該第二事件集包括該第二文件發(fā)生的第二事件時(shí),根據(jù)該第一事件和該第二事件,分別對(duì)該第一文件和該第二文件進(jìn)行處理,使得該第一文件和該第二文件同步。
[0079]可選地,根據(jù)該第一事件和該第二事件,分別對(duì)該第一文件和該第二文件進(jìn)行處理,使得該第一文件和該第二文件同步包括:
[0080]當(dāng)該第一事件和該第二事件均為增事件時(shí),將該第二文件重新命名,并將該第一文件下載至該終端設(shè)備,將重命名后的第二文件上傳至該服務(wù)器;或,
[0081]當(dāng)該第一事件和該第二事件均為增事件時(shí),將該第一文件重新命名,并將重命名后的第一文件下載至該終端設(shè)備,將該第二文件上傳至該服務(wù)器;或,
[0082]當(dāng)該第一事件為增事件,且該第二事件為減事件時(shí),將該第一文件下載至該終端設(shè)備;或,
[0083]當(dāng)該第一事件為減事件,且該第二事件為增事件時(shí),將該第二文件上傳至該服務(wù)器;或,
[0084]當(dāng)該第一事件和該第二事件均為減事件時(shí),將該第一文件和該第二文件刪除。
[0085]可選地,該方法還包括:
[0086]當(dāng)確定需要將該第二文件上傳至該服務(wù)器時(shí),獲取該第二文件的哈希值;
[0087]判斷該服務(wù)器中是否存在哈希值與該第二文件的哈希值相同的文件;
[0088]如果是,根據(jù)該第二文件的信息,對(duì)該服務(wù)器中哈希值與該第二文件的哈希值相同的文件的信息進(jìn)行修改;
[0089]如果否,將該第二文件上傳至該服務(wù)器。
[0090]上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本發(fā)明的可選實(shí)施例,在此不再
--贅述。
[0091]圖2是本發(fā)明實(shí)施例提供的一種文件同步方法的流程圖,參見圖2,該方法包括:
[0092]201、對(duì)于該服務(wù)器中的第一文件,以及該終端設(shè)備中與該第一文件相同的第二文件,該電子設(shè)備監(jiān)控該第一文件和該第二文件的變化。
[0093]在本發(fā)明實(shí)施例中,該第一文件位于該服務(wù)器中,該第二文件位于該終端設(shè)備中,該第一文件和該第二文件為相同的文件,該電子設(shè)備分別監(jiān)控該第一文件所發(fā)生的變化以及該第二文件所發(fā)生的變化。其中,兩個(gè)文件相同是指兩個(gè)文件的文件名稱相同,且兩個(gè)文件存儲(chǔ)在對(duì)應(yīng)的文件路徑下。
[0094]本發(fā)明實(shí)施例僅是以該電子設(shè)備實(shí)時(shí)監(jiān)控該第一文件和該第二文件的變化,以便對(duì)該第一文件和該第二文件進(jìn)行同步為例進(jìn)行說明,而在實(shí)際應(yīng)用過程中,該電子設(shè)備還可以設(shè)置檢測時(shí)長,每隔該檢測時(shí)長后,獲取當(dāng)前的該第一文件和該第二文件,比較本次獲取到的文件與上一次獲取到的文件的差異,以確定該第一文件和該第二文件在該檢測時(shí)長內(nèi)發(fā)生的變化,本發(fā)明實(shí)施例對(duì)此不做限定。進(jìn)一步地,該電子設(shè)備實(shí)際上可以監(jiān)控該服務(wù)器中的所有文件的變化,以及該終端設(shè)備中所有文件的變化,以便對(duì)該服務(wù)器和該終端設(shè)備中的所有相同的文件進(jìn)行同步,本發(fā)明實(shí)施例對(duì)此也不做限定。
[0095]202、當(dāng)該電子設(shè)備檢測到該第一文件發(fā)生變化時(shí),獲取該第一文件的變化類型,并根據(jù)該第一文件的變化類型,確定該第一文件發(fā)生的第一事件。
[0096]在本發(fā)明實(shí)施例中,文件的變化類型包括創(chuàng)建、刪除和修改,當(dāng)在該服務(wù)器中新創(chuàng)建了該第一文件時(shí),該第一文件的變化類型即為創(chuàng)建類型。當(dāng)在該服務(wù)器中對(duì)該第一文件進(jìn)行了修改時(shí),該第一文件的變化類型即為修改類型。當(dāng)在該服務(wù)器中刪除了該第一文件,或者,將該第一文件移動(dòng)至其他的文件路徑下,或者將該第一文件重命名為其他的名稱時(shí),該第一文件已不存在,該第一文件的變化類型即為刪除類型,此時(shí),雖然該服務(wù)器中已不存在該第一文件,但由于之前該服務(wù)器中保存過該第一文件,因此,仍需要確定該第一文件的變化類型。
[0097]本發(fā)明實(shí)施例將文件發(fā)生的事件分為增事件(+ )和減事件(_)兩種,則當(dāng)該第一文件的變化類型為刪除類型時(shí),該第一文件發(fā)生的第一事件為減事件,當(dāng)該第一文件的變化類型為創(chuàng)建類型和修改類型時(shí),該第一文件發(fā)生的第一事件為增事件。當(dāng)對(duì)該第一文件進(jìn)行了多次修改時(shí),由于每次修改時(shí)確定的第一事件均為增事件,則無需記錄該第一文件多次修改的事件,只需確定該第一文件發(fā)生了增事件即可,減少了冗余事件的發(fā)生,提高了文件同步的效率。
[0098]進(jìn)一步地,當(dāng)該電子設(shè)備監(jiān)控該服務(wù)器中的所有文件時(shí),根據(jù)每個(gè)文件的變化類型,分別確定每個(gè)文件所發(fā)生的事件,將每個(gè)文件所發(fā)生的事件組成第一事件集。
[0099]203、當(dāng)該電子設(shè)備檢測到該第二文件發(fā)生變化時(shí),獲取該第二文件的變化類型,根據(jù)該第二文件的變化類型,確定該第二文件發(fā)生的第二事件。
[0100]該步驟203與該步驟202類似,在此不再贅述。
[0101]同理地,當(dāng)該電子設(shè)備監(jiān)控該終端設(shè)備中的所有文件時(shí),根據(jù)每個(gè)文件的變化類型,分別確定每個(gè)文件所發(fā)生的事件,將每個(gè)文件所發(fā)生的事件組成第二事件集。
[0102]需要說明的是,該第一文件發(fā)生的第一事件與該第二文件發(fā)生的第二事件均與上下文無關(guān),因此,根據(jù)該第一事件和該第二事件,對(duì)該第一文件和該第二文件進(jìn)行處理后,即可保證該第一文件和該第二文件同步。
[0103]204、當(dāng)該電子設(shè)備接收到同步指令時(shí),根據(jù)該第一事件和該第二事件,分別對(duì)該第一文件和該第二文件進(jìn)行處理,使得該第一文件和該第二文件同步。[0104]其中,該同步指令可以由用戶在該終端設(shè)備上觸發(fā),或者由用戶設(shè)置預(yù)設(shè)時(shí)長,該電子設(shè)備根據(jù)該預(yù)設(shè)時(shí)長周期性地觸發(fā)該同步指令,本發(fā)明實(shí)施例對(duì)此不做限定。進(jìn)一步地,本發(fā)明實(shí)施例以步驟204在該步驟202和步驟203之后執(zhí)行為例,實(shí)際上,該電子設(shè)備還可以在接收到同步指令時(shí),檢測該第一文件和該第二文件的變化,得到該第一事件和該第二事件后再對(duì)該第一文件和該第二文件進(jìn)行處理,本發(fā)明實(shí)施例對(duì)此不做限定。
[0105]具體地,該步驟204可以包括以下步驟(I) - (5)中的任一項(xiàng):
[0106](I)當(dāng)該第一事件和該第二事件均為增事件時(shí),將該第二文件重新命名,并將該第一文件下載至該終端設(shè)備,將重命名后的第二文件上傳至該服務(wù)器。
[0107]當(dāng)該第一事件為增事件時(shí),表示該第一文件可能為新創(chuàng)建的文件或者修改過的文件,也即是該第一文件發(fā)生了 “增量變化”,當(dāng)該第一事件和該第二事件均為增事件時(shí),表明該服務(wù)器上的第一文件和該終端設(shè)備上的第二文件均發(fā)生了 “增量變化”,此時(shí),需要在該第一文件和該第二文件同步的同時(shí),保留該第一文件和該第二文件,因此,可以將該第二文件重新命名,上傳至該服務(wù)器,將該第一文件下載至該終端設(shè)備。
[0108]例如,該服務(wù)器和該終端設(shè)備中均保存有文件“a.txt”,且文件“a.txt”在該服務(wù)器中發(fā)生的第一事件為增事件,在該終端設(shè)備中發(fā)生的第二事件也是增事件,則將終端設(shè)備中的文件“a.txt”重命名為“a.conflict, txt”,上傳至該服務(wù)器,將服務(wù)器中的文件“a.txt”下載至該終端設(shè)備,使得該服務(wù)器和該終端設(shè)備中均保存有文件“a.txt”和文件“a.conflict, txt,,。
[0109](2)當(dāng)該第一事件和該第二事件均為增事件時(shí),將該第一文件重新命名,并將重命名后的第一文件下載至該終端設(shè)備,將該第二文件上傳至該服務(wù)器。
[0110]當(dāng)該服務(wù)器上的第一文件和該終端設(shè)備上的第二文件均發(fā)生了 “增量變化”,還可以將該第一文件重新命名,下載至該終端設(shè)備,將該第二文件上傳至該服務(wù)器?;诓襟E(O的舉例,還可以將服務(wù)器中的文件“a.txt”重命名為“a.conflict, txt”,下載至該終端設(shè)備,將該終端設(shè)備中的文件“a.txt”上傳至該服務(wù)器,使得該服務(wù)器和該終端設(shè)備中均保存有文件“a.txt” 和文件“a.conflict, txt”。
[0111](3)當(dāng)該第一事件為增事件,且該第二事件為減事件時(shí),將該第一文件下載至該終端設(shè)備。
[0112]當(dāng)該第二事件為減事件時(shí),表示該第二文件被刪除、被移動(dòng)為另一文件或者被重命名為另一文件,即該第二文件發(fā)生了“減量變化”。當(dāng)該第一事件為增事件,且該第二事件為減事件時(shí),為了保證該服務(wù)器和該終端設(shè)備上的文件同步,將該第一文件下載至該終端設(shè)備。
[0113](4)當(dāng)該第一事件和該第二事件均為減事件時(shí),將該第一文件和該第二文件刪除。
[0114]當(dāng)該第一事件和該第二事件均為減事件時(shí),表示該第一文件和該第二文件均被刪除、被移動(dòng)為另一文件或者被重命名為另一文件,則不再需要對(duì)該第一文件和該第二文件同步。
[0115](5)當(dāng)該第一事件為減事件,且該第二事件為增事件時(shí),將該第二文件上傳至該服務(wù)器。
[0116]當(dāng)該第一事件為減事件,且該第二事件為增事件時(shí),表示該第一文件被刪除、被移動(dòng)為另一文件或者被重命名為另一文件,該第二文件被創(chuàng)建或者被修改,此時(shí),需要在該第一文件和該第二文件同步的同時(shí)保留該第二文件,因此,將該第二文件上傳至該服務(wù)器。
[0117]在步驟(5)中,該第一文件被刪除、被移動(dòng)為另一文件或者被重命名為另一文件,該電子設(shè)備確定將該第二文件上傳至該服務(wù)器,但是,如果該第一文件被移動(dòng)為另一文件或者被重命名為另一文件時(shí),該服務(wù)器中已保存該另一文件,且該另一文件的內(nèi)容與該第二文件的內(nèi)容相同,并不需要將該第二文件上傳至該服務(wù)器。
[0118]因此,為了避免上傳不必要的文件,該電子設(shè)備可以在確定需要將該第二文件上傳至該服務(wù)器時(shí),獲取該第二文件的哈希值;判斷該服務(wù)器中是否存在哈希值與該第二文件的哈希值相同的文件;如果是,根據(jù)該第二文件的信息,對(duì)該服務(wù)器中哈希值與該第二文件的哈希值相同的文件的信息進(jìn)行修改;如果否,將該第二文件上傳至該服務(wù)器。
[0119]其中,兩個(gè)文件的哈希值相同,表示兩個(gè)文件的內(nèi)容相同,即實(shí)質(zhì)上是相同的文件。該電子設(shè)備獲取該第二文件的哈希值,判斷該服務(wù)器中是否存在哈希值與該第二文件的哈希值相同的文件,當(dāng)該服務(wù)器中存在哈希值與該第二文件的哈希值相同的文件時(shí),表明該服務(wù)器已保存與該第二文件相同的文件,只是可能被移動(dòng)或者被重命名,因此,對(duì)該哈希值與該第二文件的哈希值相同的文件的信息進(jìn)行修改,使得該文件的信息與該第二文件的信息相同。當(dāng)該文件的名稱與該第二文件的名稱不同時(shí),將該文件重命名為該第二文件的名稱,當(dāng)該文件的文件路徑與該第二文件的文件路徑不對(duì)應(yīng)時(shí),將該文件移動(dòng)至該服務(wù)器中與該第二文件在該終端設(shè)備中的文件路徑對(duì)應(yīng)的文件路徑下。另外,當(dāng)該服務(wù)器中不存在哈希值與該第二文件的哈希值相同的文件時(shí),再將該第二文件上傳至該服務(wù)器。
[0120]可選地,該電子設(shè)備向該服務(wù)器發(fā)送hasHash (hash)請(qǐng)求,獲取該服務(wù)器中是否存在哈希值與該第二文件的哈希值相同的文件的判斷結(jié)果。當(dāng)該服務(wù)器中存在哈希值與該第二文件的哈希值相同的文件時(shí),調(diào)用修改信息的APKApplication Program Interface,應(yīng)用程序接口),對(duì)該文件的信息進(jìn)行修改,當(dāng)該服務(wù)器中不存在哈希值與該第二文件的哈希值相同的文件時(shí),調(diào)用數(shù)據(jù)傳輸API,將該第二文件上傳至該服務(wù)器。
[0121]在本發(fā)明實(shí)施例中,當(dāng)該電子設(shè)備接收到該同步指令時(shí),根據(jù)該第一事件和該第二事件,先確定該第一文件應(yīng)該執(zhí)行的事件和該第二文件應(yīng)該執(zhí)行的事件,再對(duì)該第一文件和該第二文件進(jìn)行處理,使得該第一文件和該第二文件同步。對(duì)于該服務(wù)器和該終端設(shè)備中的所有文件,該電子設(shè)備獲取該第一事件集和該第二事件集,當(dāng)接收到同步指令時(shí),可以先根據(jù)該第一事件集和該第二事件集,確定執(zhí)行事件集,該執(zhí)行事件集包括該服務(wù)器和該終端設(shè)備中的文件待執(zhí)行的事件,再根據(jù)該執(zhí)行事件集,對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行處理,使得該服務(wù)器中的文件與該終端設(shè)備中的文件同步。
[0122]本發(fā)明實(shí)施例提供的方法,通過將文件發(fā)生的事件分為增事件和減事件兩種,并通過電子設(shè)備獲取服務(wù)器中文件發(fā)生的事件和終端設(shè)備中文件發(fā)生的事件,分別組成第一事件集和第二事件集,減少了冗余事件的發(fā)生,在根據(jù)該第一事件集和該第二事件集對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步時(shí),極大地降低了沖突事件發(fā)生的概率,提高了文件同步的效率。
[0123]圖3是本發(fā)明實(shí)施例提供的一種文件同步裝置結(jié)構(gòu)示意圖,參見圖3,該裝置包括:
[0124]事件集獲取模塊301,用于獲取第一事件集和第二事件集,該第一事件集包括服務(wù)器中的文件發(fā)生的事件,該第二事件集包括終端設(shè)備中的文件發(fā)生的事件,文件發(fā)生的事件包括增事件和減事件中的至少一項(xiàng);
[0125]同步模塊302與事件集獲取模塊301連接,用于當(dāng)接收到同步指令時(shí),根據(jù)該第一事件集和該第二事件集,對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步。
[0126]該事件集獲取模塊301包括:
[0127]第一變化獲取單元,用于當(dāng)該電子設(shè)備檢測到該服務(wù)器中的第一文件發(fā)生變化時(shí),獲取該第一文件的變化類型,文件的變化類型包括創(chuàng)建、刪除和修改;
[0128]第一事件獲取單元,用于根據(jù)該第一文件的變化類型,確定該第一文件發(fā)生的事件;
[0129]第一事件集獲取單元,用于獲取該服務(wù)器中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到該第一事件集。
[0130]該事件集獲取模塊301包括:
[0131]第二變化獲取單元,用于當(dāng)該電子設(shè)備檢測到該終端設(shè)備中的第二文件發(fā)生變化時(shí),獲取該第二文件的變化類型;
[0132]第二事件獲取單元,用于根據(jù)該第二文件的變化類型,確定該第二文件發(fā)生的事件;
[0133]第二事件集獲取單元,用于獲取該終端設(shè)備中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到該第二事件集。
[0134]該同步模塊302包括:
[0135]執(zhí)行事件集確定單元,用于當(dāng)接收到同步指令時(shí),根據(jù)該第一事件集和該第二事件集,確定執(zhí)行事件集,該執(zhí)行事件集包括該服務(wù)器和該終端設(shè)備中的文件待執(zhí)行的事件;
[0136]第一同步單元,用于根據(jù)該執(zhí)行事件集,對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行處理,使得該服務(wù)器中的文件與該終端設(shè)備中的文件同步。
[0137]該同步模塊302包括:
[0138]第二同步單元,用于當(dāng)該第一文件和該第二文件為相同的文件,且該第一事件集包括該第一文件發(fā)生的第一事件,該第二事件集包括該第二文件發(fā)生的第二事件時(shí),根據(jù)該第一事件和該第二事件,分別對(duì)該第一文件和該第二文件進(jìn)行處理,使得該第一文件和該第二文件同步。
[0139]該第二同步單元用于當(dāng)該第一事件和該第二事件均為增事件時(shí),將該第二文件重新命名,并將該第一文件下載至該終端設(shè)備,將重命名后的第二文件上傳至該服務(wù)器;或,當(dāng)該第一事件和該第二事件均為增事件時(shí),將該第一文件重新命名,并將重命名后的第一文件下載至該終端設(shè)備,將該第二文件上傳至該服務(wù)器;或,當(dāng)該第一事件為增事件,且該第二事件為減事件時(shí),將該第一文件下載至該終端設(shè)備;或,當(dāng)該第一事件為減事件,且該第二事件為增事件時(shí),將該第二文件上傳至該服務(wù)器;或,當(dāng)該第一事件和該第二事件均為減事件時(shí),將該第一文件和該第二文件刪除。
[0140]該裝置還包括:
[0141]哈希值獲取模塊,用于當(dāng)確定需要將該第二文件上傳至該服務(wù)器時(shí),獲取該第二文件的哈希值;
[0142]判斷模塊。用于判斷該服務(wù)器中是否存在哈希值與該第二文件的哈希值相同的文件;
[0143]信息修改模塊,用于當(dāng)該服務(wù)器中存在哈希值與該第二文件的哈希值相同的文件,根據(jù)該第二文件的信息,對(duì)該服務(wù)器中哈希值與該第二文件的哈希值相同的文件的信息進(jìn)行修改;
[0144]上傳模塊,用于當(dāng)該服務(wù)器中不存在哈希值與該第二文件的哈希值相同的文件,將該第二文件上傳至該服務(wù)器。
[0145]本發(fā)明實(shí)施例提供的裝置,通過將文件發(fā)生的事件分為增事件和減事件兩種,并通過電子設(shè)備獲取服務(wù)器中文件發(fā)生的事件和終端設(shè)備中文件發(fā)生的事件,分別組成第一事件集和第二事件集,減少了冗余事件的發(fā)生,在根據(jù)該第一事件集和該第二事件集對(duì)該服務(wù)器和該終端設(shè)備中的文件進(jìn)行同步時(shí),極大地降低了沖突事件發(fā)生的概率,提高了文件同步的效率。
[0146]需要說明的是:上述實(shí)施例提供的文件同步裝置在文件同步時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的文件同步裝置與文件同步方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0147]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
[0148]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種文件同步方法,應(yīng)用于電子設(shè)備中,其特征在于,所述方法包括: 通過所述電子設(shè)備獲取第一事件集和第二事件集,所述第一事件集包括服務(wù)器中的文件發(fā)生的事件,所述第二事件集包括終端設(shè)備中的文件發(fā)生的事件,文件發(fā)生的事件包括增事件和減事件中的至少一項(xiàng); 當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過所述電子設(shè)備獲取第一事件集和第二事件集包括: 當(dāng)所述電子設(shè)備檢測到所述服務(wù)器中的第一文件發(fā)生變化時(shí),獲取所述第一文件的變化類型,文件的變化類型包括創(chuàng)建、刪除和修改; 根據(jù)所述第一文件的變化類型,確定所述第一文件發(fā)生的事件; 獲取所述服務(wù)器中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第一事件集。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過所述電子設(shè)備獲取第一事件集和第二事件集包括: 當(dāng)所述電子設(shè)備檢測到所述終端設(shè)備中的第二文件發(fā)生變化時(shí),獲取所述第二文件的變化類型; 根據(jù)所述第二文件的變化類型,確定所述第二文件發(fā)生的事件; 獲取所述終端設(shè)備中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第二事件集。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步包括: 當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,確定執(zhí)行事件集,所述執(zhí)行事件集包括所述服務(wù)器和所述終端設(shè)備中的文件待執(zhí)行的事件; 根據(jù)所述執(zhí)行事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行處理,使得所述服務(wù)器中的文件與所述終端設(shè)備中的文件同步。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步包括: 當(dāng)所述第一文件和所述第二文件為相同的文件,且所述第一事件集包括所述第一文件發(fā)生的第一事件,所述第二事件集包括所述第二文件發(fā)生的第二事件時(shí),根據(jù)所述第一事件和所述第二事件,分別對(duì)所述第一文件和所述第二文件進(jìn)行處理,使得所述第一文件和所述第二文件同步。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,根據(jù)所述第一事件和所述第二事件,分別對(duì)所述第一文件和所述第二文件進(jìn)行處理,使得所述第一文件和所述第二文件同步包括: 當(dāng)所述第一事件和所述第二事件均為增事件時(shí),將所述第二文件重新命名,并將所述第一文件下載至所述終端設(shè)備,將重命名后的第二文件上傳至所述服務(wù)器;或, 當(dāng)所述第一事件和所述第二事 件均為增事件時(shí),將所述第一文件重新命名,并將重命名后的第一文件下載至所述終端設(shè)備,將所述第二文件上傳至所述服務(wù)器;或, 當(dāng)所述第一事件為增事件,且所述第二事件為減事件時(shí),將所述第一文件下載至所述終端設(shè)備;或, 當(dāng)所述第一事件為減事件,且所述第二事件為增事件時(shí),將所述第二文件上傳至所述服務(wù)器;或, 當(dāng)所述第一事件和所述第二事件均為減事件時(shí),將所述第一文件和所述第二文件刪除。
7.根據(jù)權(quán)利要求1-6任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 當(dāng)確定需要將所述第二文件上傳至所述服務(wù)器時(shí),獲取所述第二文件的哈希值; 判斷所述服務(wù)器中是否存在哈希值與所述第二文件的哈希值相同的文件; 如果是,根據(jù)所述第二文件的信息,對(duì)所述服務(wù)器中哈希值與所述第二文件的哈希值相同的文件的信息進(jìn)行修改; 如果否,將所述第二文件上傳至所述服務(wù)器。
8.一種文件同步裝置,應(yīng)用于電子設(shè)備中,其特征在于,所述裝置包括: 事件集獲取模塊,用于獲取第一事件集和第二事件集,所述第一事件集包括服務(wù)器中的文件發(fā)生的事件,所述第二事件集包括終端設(shè)備中的文件發(fā)生的事件,文件發(fā)生的事件包括增事件和減事件中的至少一項(xiàng); 同步模塊,用于當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行同步。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述事件集獲取模塊包括: 第一變化獲取單元,用于當(dāng)所述電子設(shè)備檢測到所述服務(wù)器中的第一文件發(fā)生變化時(shí),獲取所述第一文件的變化類型,文件的變化類型包括創(chuàng)建、刪除和修改; 第一事件獲取單元,用于根據(jù)所述第一文件的變化類型,確定所述第一文件發(fā)生的事件; 第一事件集獲取單元,用于獲取所述服務(wù)器中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第一事件集。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述事件集獲取模塊包括: 第二變化獲取單元,用于當(dāng)所述電子設(shè)備檢測到所述終端設(shè)備中的第二文件發(fā)生變化時(shí),獲取所述第二文件的變化類型; 第二事件獲取單元,用于根據(jù)所述第二文件的變化類型,確定所述第二文件發(fā)生的事件; 第二事件集獲取單元,用于獲取所述終端設(shè)備中發(fā)生變化的每個(gè)文件所發(fā)生的事件,得到所述第二事件集。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述同步模塊包括: 執(zhí)行事件集確定單元,用于當(dāng)接收到同步指令時(shí),根據(jù)所述第一事件集和所述第二事件集,確定執(zhí)行事件集,所述執(zhí)行事件集包括所述服務(wù)器和所述終端設(shè)備中的文件待執(zhí)行的事件; 第一同步單元,用于根據(jù)所述執(zhí)行事件集,對(duì)所述服務(wù)器和所述終端設(shè)備中的文件進(jìn)行處理,使得所述服務(wù)器中的文件與所述終端設(shè)備中的文件同步。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述同步模塊包括: 第二同步單元,用于當(dāng)所述第一文件和所述第二文件為相同的文件,且所述第一事件集包括所述第一文件發(fā)生的第一事件,所述第二事件集包括所述第二文件發(fā)生的第二事件時(shí),根據(jù)所述第一事件和所述第二事件,分別對(duì)所述第一文件和所述第二文件進(jìn)行處理,使得所述第一文件和所述第二文件同步。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第二同步單元用于當(dāng)所述第一事件和所述第二事件均為增事件時(shí),將所述第二文件重新命名,并將所述第一文件下載至所述終端設(shè)備,將重命名后的第二文件上傳至所述服務(wù)器;或,當(dāng)所述第一事件和所述第二事件均為增事件時(shí),將所述第一文件重新命名,并將重命名后的第一文件下載至所述終端設(shè)備,將所述第二文件上傳至所述服務(wù)器;或,當(dāng)所述第一事件為增事件,且所述第二事件為減事件時(shí),將所述第一文件下載至所述終端設(shè)備;或,當(dāng)所述第一事件為減事件,且所述第二事件為增事件時(shí),將所述第二文件上傳至所述服務(wù)器;或,當(dāng)所述第一事件和所述第二事件均為減事件時(shí),將所述第一文件和所述第二文件刪除。
14.根據(jù)權(quán)利要求8-13任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 哈希值獲取模塊,用于當(dāng)確定需要將所述第二文件上傳至所述服務(wù)器時(shí),獲取所述第二文件的哈希值; 判斷模塊。用于判斷所述服務(wù)器中是否存在哈希值與所述第二文件的哈希值相同的文件; 信息修改模塊,用于當(dāng)所述服務(wù)器中存在哈希值與所述第二文件的哈希值相同的文件,根據(jù)所述第二文件的信息,對(duì)所述服務(wù)器中哈希值與所述第二文件的哈希值相同的文件的信息進(jìn)行修改; 上傳模塊,用于當(dāng)所述服務(wù) 器中不存在哈希值與所述第二文件的哈希值相同的文件,將所述第二文件上傳至所述服務(wù)器。
【文檔編號(hào)】H04L29/08GK103902663SQ201410085630
【公開日】2014年7月2日 申請(qǐng)日期:2014年3月10日 優(yōu)先權(quán)日:2014年3月10日
【發(fā)明者】鄧寧, 林松濤 申請(qǐng)人:聯(lián)想(北京)有限公司