專利名稱:一種文件同步的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及一種文件同步的方法和裝置。
技術(shù)背景
現(xiàn)有技術(shù)中,越來越多的場合中需要文件同步,如移動計(jì)費(fèi)基礎(chǔ)文件在各個(gè)扣費(fèi)平臺中的同步,以用于日對賬或者月對帳;微博消息需要同步到各個(gè)終端或者平臺;游戲服務(wù)器用戶的數(shù)據(jù)需要同步到多個(gè)服務(wù)器上。
該些文件同步需求量大,而現(xiàn)有技術(shù)中的文件同步僅是將源文件復(fù)制到各個(gè)需同步的設(shè)備中,然后將源文件刪除。現(xiàn)有技術(shù)中的操作,容易因異常發(fā)生而導(dǎo)致文件丟失,可靠性差。發(fā)明內(nèi)容
本發(fā)明提供的一種文件同步的方法和裝置,以解決通信系統(tǒng)中文件同步可靠性差的問題。
本發(fā)明公開了一種文件同步的方法,所述方法包括
讀取配置文件獲得配置信息,對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí), 啟動所述任務(wù)的線程,進(jìn)行文件同步操作;
所述文件同步操作包括將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下,并將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程;
在將源路徑下的文件復(fù)制到目標(biāo)路徑下時(shí),如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋。
其中,所述配置信息中包括每個(gè)任務(wù)的同步時(shí)間段和同步掃描周期;
所述當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作進(jìn)一步包括
步驟21,判斷所述任務(wù)的線程是否已經(jīng)啟動,如果沒有啟動,則執(zhí)行步驟22,如果已經(jīng)啟動,則等待線程結(jié)束后進(jìn)行下次判斷;
步驟22,判斷當(dāng)前時(shí)間是否在所述任務(wù)的同步時(shí)間段內(nèi)并且所述任務(wù)的同步掃描周期是否到達(dá),如果都為是,則啟動所述任務(wù)的線程進(jìn)行文件同步操作,否則,繼續(xù)等待。
其中,所述將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下進(jìn)一步包括
步驟31,所述任務(wù)的線程檢測源路徑和目標(biāo)路徑,如果檢測都成功,則將源路徑下的文件復(fù)制到目標(biāo)路徑下,否則,等待預(yù)設(shè)時(shí)長后重新進(jìn)行檢測或報(bào)告文件同步失敗。
其中,所述配置信息中包括重試次數(shù)閾值和重試周期;
所述文件同步操作還包括
步驟41,在文件同步操作失敗后,按配置的重試周期重新進(jìn)行文件同步操作,如果重新進(jìn)行文件同步操作的次數(shù)大于配置的重試次數(shù)閾值,則結(jié)束所述線程,并報(bào)告文件同步失敗。
其中,所述啟動所述任務(wù)的線程進(jìn)一步包括
步驟51,啟動同所述任務(wù)中源路徑目標(biāo)路徑對數(shù)量相同的線程,每個(gè)線程處理一個(gè)源路徑目標(biāo)路徑對的文件同步操作。
其中,所述將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下進(jìn)一步包括
步驟61,根據(jù)預(yù)定義算法由源路徑生成目標(biāo)路徑,將源路徑下的文件復(fù)制到所述目標(biāo)路徑下。
其中,所述配置信息中包括全局定時(shí)器運(yùn)行周期;
所述讀取配置文件獲得配置信息后還包括
步驟71,啟動全局定時(shí)器;當(dāng)所述全局定時(shí)器到達(dá)配置的全局定時(shí)器運(yùn)行周期時(shí),檢查任務(wù)的線程是否啟動,在所述線程沒有啟動并且當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作。
其中,所述方法還包括
步驟81,當(dāng)所述配置文件更新時(shí),停止所述全局定時(shí)器,等待所有正在進(jìn)行的線程結(jié)束后,重新讀取配置文件,并啟動所述全局定時(shí)器。
本發(fā)明還公開了一種文件同步的裝置,所述裝置包括配置文件獲取單元、文件同步操作單元、文件復(fù)制單元,
配置文件獲取單元,用于讀取配置文件獲得配置信息;
文件同步操作單元,用于對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,調(diào)用文件復(fù)制單元,進(jìn)行文件同步操作;
文件復(fù)制單元,用于將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下,如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋,并將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程。
其中,所述配置信息中包括每個(gè)任務(wù)的同步時(shí)間段和同步掃描周期;
所述文件同步操作單元進(jìn)一步用于判斷所述任務(wù)的線程是否已經(jīng)啟動,如果沒有啟動,則判斷當(dāng)前時(shí)間是否在所述任務(wù)的同步時(shí)間段內(nèi)并且所述任務(wù)的同步掃描周期是否到達(dá),如果都為是,則啟動所述任務(wù)的線程進(jìn)行文件同步操作,否則,繼續(xù)等待,如果已經(jīng)啟動,則等待線程結(jié)束后進(jìn)行下次判斷;
或
所述文件復(fù)制單元在將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下時(shí)進(jìn)一步用于使用所述線程檢測源路徑和目標(biāo)路徑,如果檢測都成功,則將源路徑下的文件復(fù)制到目標(biāo)路徑下,否則,等待預(yù)設(shè)時(shí)長后重新進(jìn)行檢測或報(bào)告文件同步失敗。
本發(fā)明實(shí)施例的有益效果是通過在源路徑中文件備份成功后,刪除源路徑中文件,能夠避免因斷電、路由失敗等異常情況而導(dǎo)致的文件丟失,容錯性更高;通過自動在同步時(shí)間段進(jìn)行周期同步,能夠提高同步操作的靈活性,更好的適應(yīng)不同應(yīng)用環(huán)境下的同步要求;通過在源路徑和目標(biāo)路徑檢測都成功后進(jìn)行同步復(fù)制,能夠進(jìn)一步增加同步成功的概率,減少因異常而導(dǎo)致的失??;通過在文件同步失敗后進(jìn)行重試,進(jìn)一步提高文件同步的效率;通過對每個(gè)任務(wù)啟動多個(gè)線程進(jìn)行并行處理,進(jìn)一步提高操作效率;通過更改目標(biāo)路徑,使得目標(biāo)路徑同源路徑間關(guān)系被加密,提高文件同步的安全性;通過設(shè)置全局定時(shí)器,控制在配置更新時(shí),暫停線程啟動,能夠既保證配置的靈活性又保證文件同步的正常運(yùn)行,提高文件同步的靈活性和可靠性。
圖1為本發(fā)明文件同步的方法具體實(shí)施方式
的流程圖2為本發(fā)明文件同步的方法實(shí)施例的流程圖3為本發(fā)明文件同步的方法實(shí)施例中文件同步操作的流程圖4為本發(fā)明文件同步的裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
一種文件同步的方法包括讀取配置文件獲得配置信息,對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作;所述文件同步操作包括將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下,并將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程;在將源路徑下的文件復(fù)制到目標(biāo)路徑下時(shí),如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋。
參見圖1,為本發(fā)明具體實(shí)施方式
提供的文件同步的方法的流程圖。
該具體實(shí)施方式
中,文件同步服務(wù)器將文件由源路徑復(fù)制到目標(biāo)路徑。
步驟S110,讀取配置文件獲得配置信息。
配置信息中包括每個(gè)任務(wù)的同步時(shí)間段和同步掃描周期。
步驟S120,對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程。
進(jìn)一步地,啟動的線程數(shù)量為任務(wù)中源路徑目標(biāo)路徑對的數(shù)量,每個(gè)線程處理一個(gè)源路徑目標(biāo)路徑對的文件同步操作。
所述步驟S120進(jìn)一步包括
步驟S121,判斷所述任務(wù)的線程是否已經(jīng)啟動,如果沒有啟動,則執(zhí)行步驟S122, 如果已經(jīng)啟動,則等待線程結(jié)束后進(jìn)行下次判斷。
步驟S122,判斷當(dāng)前時(shí)間是否在所述任務(wù)的同步時(shí)間段內(nèi)并且所述任務(wù)的同步掃描周期是否到達(dá),如果都為是,則啟動所述任務(wù)的線程,否則,繼續(xù)等待。
步驟S130,線程檢測源路徑,如果檢測成功,則執(zhí)行步驟S140,否則,等待預(yù)設(shè)時(shí)長后重新進(jìn)行檢測或報(bào)告文件同步失敗。
檢測源路徑存在,則認(rèn)為檢測成功,否則檢測不成功。
步驟S140,線程檢測目標(biāo)路徑,如果檢測成功,則執(zhí)行步驟S150,否則,等待預(yù)設(shè)時(shí)長后重新進(jìn)行檢測。
檢測目標(biāo)路徑時(shí),如果目標(biāo)路徑存在,則檢測成功,否則,檢測不成功。或者,如果到目的端路由成功,則認(rèn)為檢測成功,如果目的端沒有目標(biāo)路徑,則在目的端依據(jù)目標(biāo)路徑創(chuàng)建目錄,如果到目的端路由失敗,則認(rèn)為對目標(biāo)路徑檢測失敗。
目標(biāo)路徑同源路徑間的對應(yīng)關(guān)系為源路徑的目錄結(jié)構(gòu)和名稱和目標(biāo)路徑的目錄結(jié)構(gòu)和名稱相同,或者,根據(jù)預(yù)定義算法由源路徑生成目標(biāo)路徑,將源路徑下的文件復(fù)制到所述目標(biāo)路徑下。例如,根據(jù)源目錄+文件名稱進(jìn)行MD5運(yùn)算得到的串再取最后一個(gè)字母為目標(biāo)路徑。
MD5 (Message Digest Algorithm,消息摘要算法)為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù)。該算法的文件號為RFC 1321 (R. Rivest, MIT Laboratory for Computer Science and RSA DataSecurity Inc. April 1992)。
步驟S150,從源路徑下讀取待復(fù)制的文件。
步驟S160,將待復(fù)制的文件復(fù)制到目標(biāo)路徑下,如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋。
步驟S170,將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程。
檢測到源路徑下已經(jīng)不存在復(fù)制的文件了,則認(rèn)為文件同步操作成功。
備份路徑可以是在源端本地也可以通過FTP方式,復(fù)制到同源端不同的備份設(shè)備上。
其中,如果備份路徑不存在,則按備份路徑創(chuàng)建目錄,完成備份。
進(jìn)一步地,所述配置信息中包括重試次數(shù)閾值和重試周期。
當(dāng)因路徑檢測失敗或斷電等異常情況而導(dǎo)致文件同步失敗,則在文件同步操作失敗后,按配置的重試周期重新進(jìn)行文件同步操作,如果重新進(jìn)行文件同步操作的次數(shù)大于配置的重試次數(shù)閾值,則結(jié)束所述線程,并報(bào)告文件同步失敗。
具體而言,在重試周期到達(dá)時(shí),判斷本次文件同步操作中進(jìn)行重試的次數(shù)是否已經(jīng)等于或大于配置的重試次數(shù)閾值,如果否,則重新執(zhí)行步驟S130,如果是則報(bào)告文件同步失敗,結(jié)束線程。
在另一具體實(shí)施方式
中,所述配置信息中包括全局定時(shí)器運(yùn)行周期。
所述步驟SllO和所述步驟S120之間還包括啟動全局定時(shí)器;當(dāng)所述全局定時(shí)器到達(dá)配置的全局定時(shí)器運(yùn)行周期時(shí),檢查任務(wù)的線程是否啟動,在所述線程沒有啟動并且當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作。
具體而言,啟動全局定時(shí)器;判斷所述全局定時(shí)器是否到達(dá)配置的全局定時(shí)器運(yùn)行周期,如果到達(dá),則當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作,否則,繼續(xù)等待。
所述方法還包括當(dāng)所述配置文件更新時(shí),停止所述全局定時(shí)器,等待所有正在進(jìn)行的線程結(jié)束后,重新讀取配置文件,并啟動所述全局定時(shí)器。
參見圖2,為本發(fā)明文件同步的方法實(shí)施例的流程圖。
在本實(shí)施例中,配置文件如下所示。
< xml version=" 1.0" encoding="utf-8" > 〈configuration〉<FF S Settings version=" 1" ScanElaplse="3000" ReadMaxByte=" 10* 1024* 1024" CommRetryTimes="3" CommRetryelapse="3000" ><src="e:\a\ SrcFilesFilter=" *.*" IsIncludeSubDir="true" dest="f:\a" DestMode=nNULL"move="f:\back"Retry Times="3"Retryelapse="300"timePeriod="[1:24:30 2:20:30] [2:40:00 3:00:00]" scanElapse="3000">
<src="e:\a\*.doc" SrcFilesFilter="*. *.doc" IsIncludeSubDir="true" dest="ftp://192.168.1.3/a" DestMode="MODEl_MD5" move="f:\a" RetryTimes=" 3" Retryelapse="300" timePeriod="[1:24:30 2:20:30] [2:40:00 3:00:00]" scanElapse="3000" ><src="e:\a\" SrcFilesFilter="abc.*" IsIncludeSubDir="false"dest="f:\b"DestMode=nNULL" move="F:\C" RetryTimes="3" Retryelapse="300" timePeriod="[l:24:30 2:20:30] [2:40:00 3:00:00]" scanElapse="3000" > </FFSSettings>〈/configuration〉
配置文件中的配置定義說明
ScanElaplse 表示全局定時(shí)器運(yùn)行周期,單位毫秒。本實(shí)施例中,為3000毫秒。 根據(jù)kanElaplse啟動線程。
CommRetryTimes/CommRetryelapse 表示線程的缺省重試次數(shù)閾值和重試周期, 如果線程對應(yīng)的源路徑目的路徑對下沒有相應(yīng)的配置則使用該缺省配置。
ReadMaxByte 表示打開文件一次讀取最大的字節(jié)數(shù),本實(shí)施例中為10Mbyte。
SrcFilesFilter 表示支持的文件類型,可以組合。*. *表示所有文件類型,*.表示沒有擴(kuò)展名的類型,*. doc表示doc類型。% . doc表示其中含有a字符的doc文件類型,都不區(qū)分大小寫。
IsIncludeSubDir 表示同步范圍,是否包括子目錄。iTrue表示包括,false表示不包括。
DestMode 表示模式方式的模式參數(shù)。默認(rèn)為NULL表示目標(biāo)路徑同源路徑相同。 如果需要目標(biāo)路徑同源路徑不同,則設(shè)置為對應(yīng)的模式參數(shù)。例如,模式參數(shù)M0DE1_MD5表示根據(jù)源目錄+文件名稱進(jìn)行MD5運(yùn)算得到的串再取最后一個(gè)字母為路徑名。文件名稱根據(jù)需要指定。
在本實(shí)施例中,備份的備份路徑同源路徑中的文件名稱和目錄結(jié)構(gòu)相同。備份路徑可以是在源端本地也可以同過FTP方式,復(fù)制到同源端不同的備份設(shè)備上。
timePeriod:表示同步時(shí)間段,線程在該時(shí)間段進(jìn)行同步操作。本實(shí)施例中為1:24:30至2:20:30和2:40:00至3:00:00同步時(shí)間段內(nèi)可以同步。
scanElapse 同步掃描周期,按該同步掃描周期啟動線程進(jìn)行同步。單位為毫秒。
步驟S2010,讀取配置文件獲得配置信息,初始化全局配置類。
全局配置類中記錄有各個(gè)任務(wù)的文件同步操作的配置參數(shù)以及同步操作的運(yùn)行狀態(tài)。
步驟S2020,啟動全局定時(shí)器。
步驟S2030,判斷全局定時(shí)器是否到達(dá)配置的全局定時(shí)器運(yùn)行周期,如果到達(dá),執(zhí)行步驟S2040,否則,執(zhí)行步驟S2060。
步驟S2040,判斷任務(wù)的線程是否已經(jīng)啟動,如果沒有啟動,則執(zhí)行步驟S2050,如果已經(jīng)啟動,則執(zhí)行步驟S2060,等待進(jìn)行下次判斷。
步驟S2050,判斷當(dāng)前時(shí)間是否在所述任務(wù)的同步時(shí)間段內(nèi)并且所述任務(wù)的同步掃描周期是否到達(dá),如果都為是,則執(zhí)行步驟S2070,否則,執(zhí)行步驟S2060,繼續(xù)等待。
步驟S2060,等待。
步驟S2070,更新全局配置類。
步驟S2080,啟動所述任務(wù)的線程。
啟動的線程數(shù)量為任務(wù)中源路徑目標(biāo)路徑對的數(shù)量,每個(gè)線程處理一個(gè)源路徑目標(biāo)路徑對的文件同步操作。
步驟S2090,線程檢測源路徑和目標(biāo)路徑,如果都檢測成功,則執(zhí)行步驟S2100,否則,執(zhí)行步驟S2110。
檢測源路徑存在,則認(rèn)為檢測成功,否則檢測不成功。
檢測目標(biāo)路徑時(shí),如果到目的端路由成功,則認(rèn)為檢測成功,如果到目的端路由失敗,則認(rèn)為檢測失敗。
步驟S2100,進(jìn)行文件同步的操作。
文件同步的操作的流程如圖3所示。
步驟S2101,判斷啟動的模式方式,如果為NULL,則執(zhí)行步驟S2103,否則,執(zhí)行步驟 S2102
步驟S2102,根據(jù)模式在目的端生成新的目標(biāo)路徑。
例如,模式參數(shù)M0DE1_MD5表示根據(jù)源目錄+文件名稱進(jìn)行MD5運(yùn)算得到的串再取最后一個(gè)字母為路徑名。
步驟S2103,讀取源路徑下的文件,每次讀取的字節(jié)數(shù)不超過10Mbyte。
步驟S2104,將源路徑下的文件復(fù)制到目標(biāo)路徑下。
如果目標(biāo)路徑不存在,則在目的端按目標(biāo)路徑創(chuàng)建目錄。
步驟S2105,將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,但不刪除源路徑的目錄。
備份路徑可以是在源端本地也可以通過FTP方式,復(fù)制到同源端不同的備份設(shè)備上。
步驟S2110,在重試周期到達(dá)時(shí),判斷本次文件同步操作中進(jìn)行重試的次數(shù)是否已經(jīng)等于或大于配置的重試次數(shù)閾值,如果否,則重新執(zhí)行步驟S2120,如果是則記錄失敗,執(zhí)行步驟S2130。
步驟S2120,重新進(jìn)行源路徑和目的路徑的檢測,如果檢測成功,則執(zhí)行步驟 S2100,如果檢測不成功,則執(zhí)行步驟S2110。
步驟S2130,更新全局配置類。
步驟S2140,線程結(jié)束,釋放線程占用的資源。
當(dāng)配置文件更新時(shí),停止全局定時(shí)器,等待所有正在進(jìn)行的線程結(jié)束后,重新讀取配置文件,并啟動所述全局定時(shí)器
優(yōu)選的,實(shí)現(xiàn)實(shí)施例的偽代碼中可以有如下內(nèi)容要素的定義
GetTasksFromConfigQ;LoadCommConfigO; LoadDirectoryPairs(); LoadDirectoryLimittedElapseO; InitGlobalVarO;}
GetTasksFromConfig 程序啟動后讀取程序需要的公共配置;源路徑目標(biāo)路徑對;以及該源路徑目標(biāo)路徑對的同步時(shí)間段。
其中,LoadCommConf ig為讀取通用的公共配置,如前述配置。LoadDirectoryI^airs 為讀取源、目標(biāo)路徑對,備份路徑。LoadDirectoryLimittedElapse為讀取上述源路徑目標(biāo)路徑對的同步時(shí)間段,在該同步時(shí)間段內(nèi)按同步掃描周期進(jìn)行同步,本實(shí)施例中同步時(shí)間段為1 24 30至2 20 30和2 40 00至3 00 00,在該同步時(shí)間段內(nèi)按同步掃描周期查看公共配置部分進(jìn)行文件同步,同步掃描周期默認(rèn)為5分鐘。
其中,InitGlobalVar為初始化全局配置。
SetTasksTimer 設(shè)置全局定時(shí)器,根據(jù)配置中的全局定時(shí)器運(yùn)行周期啟動全局定時(shí)器,全局定時(shí)器的運(yùn)行周期到了并且當(dāng)前時(shí)間在相應(yīng)的同步時(shí)間段內(nèi)則開始執(zhí)行文件同步操作,并記錄日志。
MartTimer/StopTimer,通過啟動和停止全局定時(shí)器來啟動和停止服務(wù),停止服務(wù)時(shí)不會立即停止,執(zhí)行完所有正在執(zhí)行的線程后安全退出。
在裝載相關(guān)的配置后,根據(jù)任務(wù)中需要處理的源路徑目標(biāo)路徑對啟動相同數(shù)量的線程。
例如可通過如下定義實(shí)現(xiàn)
StartThread 啟動處理線程,記載啟動日志。
啟動線程后在同步時(shí)間段內(nèi)進(jìn)行文件同步操作,同步時(shí)間段內(nèi)的同步掃描周期如配置文件中的配置,默認(rèn)為5分鐘。如果期間發(fā)生任何異常,則中止,按配置中的重試次數(shù)閾值,默認(rèn)為3次,進(jìn)行重試。如果成功,則把源文件放到備份路徑下,并刪除源文件。記載相應(yīng)的日志。
RetrySynchronizatio,當(dāng)發(fā)生異常時(shí),需要進(jìn)行重試,則啟動重試機(jī)制。
EndSynchronization,當(dāng)整個(gè)程序退出或者因異常而進(jìn)行重試的次數(shù)達(dá)到配置的重試次數(shù)閾值時(shí)釋放資源,例如非托管資源。
參見圖4,為本發(fā)明的文件同步裝置的結(jié)構(gòu)圖。
所述裝置包括配置文件獲取單元100、文件同步操作單元200、文件復(fù)制單元300。
配置文件獲取單元100,用于讀取配置文件獲得配置信息。
文件同步操作單元200,用于對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí), 啟動所述任務(wù)的線程,調(diào)用文件復(fù)制單元300,進(jìn)行文件同步操作。
文件復(fù)制單元300,用于將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下,如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋,并將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程。
進(jìn)一步地,所述配置信息中包括每個(gè)任務(wù)的同步時(shí)間段和同步掃描周期;
所述文件同步操作單元進(jìn)一步用于判斷所述任務(wù)的線程是否已經(jīng)啟動,如果沒有啟動,則判斷當(dāng)前時(shí)間是否在所述任務(wù)的同步時(shí)間段內(nèi)并且所述任務(wù)的同步掃描周期是否到達(dá),如果都為是,則啟動所述任務(wù)的線程,調(diào)用文件復(fù)制單元,進(jìn)行文件同步操作,否則, 繼續(xù)等待,如果已經(jīng)啟動,則等待線程結(jié)束后進(jìn)行下次判斷。
所述文件復(fù)制單元在將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下時(shí)進(jìn)一步用于使用所述線程檢測源路徑和目標(biāo)路徑,如果檢測都成功,則將源路徑下的文件復(fù)制到目標(biāo)路徑下,否則,等待預(yù)設(shè)時(shí)長后重新進(jìn)行檢測或報(bào)告文件同步失敗。
進(jìn)一步地,所述配置信息中包括重試次數(shù)閾值和重試周期;
所述文件同步操作單元在文件同步操作時(shí)還用于在文件同步操作失敗后,按配置的重試周期,調(diào)用文件復(fù)制單元,重新進(jìn)行文件同步操作,如果重新進(jìn)行文件同步操作的次數(shù)大于配置的重試次數(shù)閾值,則結(jié)束所述線程,并報(bào)告文件同步失敗。
進(jìn)一步地,所述文件同步操作單元在啟動所述任務(wù)的線程時(shí)進(jìn)一步用于啟動同所述任務(wù)中源路徑目標(biāo)路徑對數(shù)量相同的線程,每個(gè)線程處理一個(gè)源路徑目標(biāo)路徑對的文件同步操作。
進(jìn)一步地,所述文件復(fù)制單元在將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下時(shí)進(jìn)一步用于根據(jù)預(yù)定義算法由源路徑生成目標(biāo)路徑,將源路徑下的文件復(fù)制到所述目標(biāo)路徑下。
進(jìn)一步地,所述配置信息中包括全局定時(shí)器運(yùn)行周期;
所述配置文件獲取單元在讀取配置文件獲得配置信息后還用于啟動全局定時(shí)器;
文件同步操作單元還用于當(dāng)所述全局定時(shí)器到達(dá)配置的全局定時(shí)器運(yùn)行周期時(shí), 檢查任務(wù)的線程是否啟動,在所述線程沒有啟動并且當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí), 啟動所述任務(wù)的線程,調(diào)用文件復(fù)制單元,進(jìn)行文件同步操作。
進(jìn)一步地,所述配置文件獲取單元還用于當(dāng)所述配置文件更新時(shí),停止所述全局定時(shí)器,等待所有正在進(jìn)行的線程結(jié)束后,重新讀取配置文件,并啟動所述全局定時(shí)器。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種文件同步的方法,其特征在于,所述方法包括讀取配置文件獲得配置信息,對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作;所述文件同步操作包括將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下,并將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程;在將源路徑下的文件復(fù)制到目標(biāo)路徑下時(shí),如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋。
2.根據(jù)權(quán)利要求1所述的文件同步的方法,其特征在于, 所述配置信息中包括每個(gè)任務(wù)的同步時(shí)間段和同步掃描周期;所述當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作進(jìn)一步包括步驟21,判斷所述任務(wù)的線程是否已經(jīng)啟動,如果沒有啟動,則執(zhí)行步驟22,如果已經(jīng)啟動,則等待線程結(jié)束后進(jìn)行下次判斷;步驟22,判斷當(dāng)前時(shí)間是否在所述任務(wù)的同步時(shí)間段內(nèi)并且所述任務(wù)的同步掃描周期是否到達(dá),如果都為是,則啟動所述任務(wù)的線程進(jìn)行文件同步操作,否則,繼續(xù)等待。
3.根據(jù)權(quán)利要求1所述的文件同步的方法,其特征在于,所述將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下進(jìn)一步包括步驟31,所述任務(wù)的線程檢測源路徑和目標(biāo)路徑,如果檢測都成功,則將源路徑下的文件復(fù)制到目標(biāo)路徑下,否則,等待預(yù)設(shè)時(shí)長后重新進(jìn)行檢測或報(bào)告文件同步失敗。
4.根據(jù)權(quán)利要求1所述的文件同步的方法,其特征在于, 所述配置信息中包括重試次數(shù)閾值和重試周期;所述文件同步操作還包括步驟41,在文件同步操作失敗后,按配置的重試周期重新進(jìn)行文件同步操作,如果重新進(jìn)行文件同步操作的次數(shù)大于配置的重試次數(shù)閾值,則結(jié)束所述線程,并報(bào)告文件同步失敗。
5.根據(jù)權(quán)利要求1所述的文件同步的方法,其特征在于, 所述啟動所述任務(wù)的線程進(jìn)一步包括步驟51,啟動同所述任務(wù)中源路徑目標(biāo)路徑對數(shù)量相同的線程,每個(gè)線程處理一個(gè)源路徑目標(biāo)路徑對的文件同步操作。
6.根據(jù)權(quán)利要求1所述的文件同步的方法,其特征在于,所述將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下進(jìn)一步包括步驟61,根據(jù)預(yù)定義算法由源路徑生成目標(biāo)路徑,將源路徑下的文件復(fù)制到所述目標(biāo)路徑下。
7.根據(jù)權(quán)利要求1所述的文件同步的方法,其特征在于, 所述配置信息中包括全局定時(shí)器運(yùn)行周期;所述讀取配置文件獲得配置信息后還包括步驟71,啟動全局定時(shí)器;當(dāng)所述全局定時(shí)器到達(dá)配置的全局定時(shí)器運(yùn)行周期時(shí),檢查任務(wù)的線程是否啟動,在所述線程沒有啟動并且當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作。
8.根據(jù)權(quán)利要求7所述的文件同步的方法,其特征在于,所述方法還包括步驟81,當(dāng)所述配置文件更新時(shí),停止所述全局定時(shí)器,等待所有正在進(jìn)行的線程結(jié)束后,重新讀取配置文件,并啟動所述全局定時(shí)器。
9.一種文件同步的裝置,其特征在于,所述裝置包括配置文件獲取單元、文件同步操作單元、文件復(fù)制單元,配置文件獲取單元,用于讀取配置文件獲得配置信息;文件同步操作單元,用于對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,調(diào)用文件復(fù)制單元,進(jìn)行文件同步操作;文件復(fù)制單元,用于將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下,如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋,并將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程。
10.根據(jù)權(quán)利要求9所述的文件同步的裝置,其特征在于,所述配置信息中包括每個(gè)任務(wù)的同步時(shí)間段和同步掃描周期;所述文件同步操作單元進(jìn)一步用于判斷所述任務(wù)的線程是否已經(jīng)啟動,如果沒有啟動,則判斷當(dāng)前時(shí)間是否在所述任務(wù)的同步時(shí)間段內(nèi)并且所述任務(wù)的同步掃描周期是否到達(dá),如果都為是,則啟動所述任務(wù)的線程進(jìn)行文件同步操作,否則,繼續(xù)等待,如果已經(jīng)啟動,則等待線程結(jié)束后進(jìn)行下次判斷;或所述文件復(fù)制單元在將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下時(shí)進(jìn)一步用于使用所述線程檢測源路徑和目標(biāo)路徑,如果檢測都成功,則將源路徑下的文件復(fù)制到目標(biāo)路徑下,否則,等待預(yù)設(shè)時(shí)長后重新進(jìn)行檢測或報(bào)告文件同步失敗。
全文摘要
本發(fā)明公開一種文件同步的方法和裝置,所述方法包括讀取配置文件獲得配置信息,對于每個(gè)任務(wù),當(dāng)所述任務(wù)配置的同步時(shí)間到達(dá)時(shí),啟動所述任務(wù)的線程,進(jìn)行文件同步操作;所述文件同步操作包括將源端的源路徑下的文件復(fù)制到目的端的目標(biāo)路徑下,并將源路徑下的文件備份到備份路徑下,備份成功后將源路徑下的文件刪除,確定文件同步操作成功后結(jié)束線程;在將源路徑下的文件復(fù)制到目標(biāo)路徑下時(shí),如果目標(biāo)路徑存在同所述文件同名的文件,則在復(fù)制時(shí)進(jìn)行覆蓋。本發(fā)明能夠提高文件同步的容錯性。
文檔編號G06F17/30GK102495880SQ20111040007
公開日2012年6月13日 申請日期2011年12月5日 優(yōu)先權(quán)日2011年12月5日
發(fā)明者楊志宇 申請人:北京新媒傳信科技有限公司