本發(fā)明涉及移動通訊領(lǐng)域,特別涉及一種ftp服務(wù)器新增文件檢測下載方法及裝置。
背景技術(shù):
ftp是filetransferprotocol(文件傳輸協(xié)議)的英文簡稱,ftp服務(wù)器則是通過ftp提供文件存儲和訪問服務(wù)的計算機,訪問者可使用ftp客戶端通過網(wǎng)絡(luò)遠程訪問ftp服務(wù)器,讀取ftp服務(wù)器存儲的文件。ftp服務(wù)器文件可刪除的場景下載邏輯較為簡潔,存在就下載、下載成功就刪除ftp服務(wù)器文件即可;而ftp服務(wù)器無法刪除的場景中就會有歷史文件堆積,需要有一種新增文件的檢測方法才能快速下載有效的新增文件。為讓眾多訪問者共享使用ftp服務(wù)器提供的文件,且避免互相之間的影響,通常做法是為訪問者提供只讀權(quán)限的ftp用戶賬號,這樣訪問者可正常讀取且無法刪除ftp文件。比如氣象領(lǐng)域的氣象資料就采用了上述共享方式,ftp服務(wù)器一般會存儲一段時間的文件,一周、一個月、一年甚至更長時間,訪問者為了能夠及時、高效的從ftp服務(wù)器眾多目錄、文件中得到新增文件就要建立一種新增文件下載的策略方法。
2015年03月25日申請公布的中國專利申請“cn104461563一種在linux下遠程定時檢測ftp服務(wù)器新增文件的方法”提供了一種新增文件的檢測方法;此專利申請在訪問者客戶端機器中將已下載文件最新的修改時間記錄在本地配置文件中。通過獲取服務(wù)器指定目錄中各個文件的修改時間,將各個文件的修改時間與本地配置文件中存儲的時間進行比對,同時在該時間之后的文件視為新增文件,將這些新增文件寫到一個新增文件列表中,最后通知數(shù)據(jù)文件下載模塊對文件列表中的文件進行下載同時將文件列表中各個文件最新的修改時間更新到本地配置文件中。
上述方法存在以下缺陷:第一:適用場景局限。此專利申請針對的是指定ftp目錄下的文件,未考慮指定ftp目錄下包含子目錄的場景,而這種場景尤為普遍,在包含子目錄場景下就會存在文件名重復(fù)的情況,此專利申請只記錄文件名及修改時間的檢測方法無法適用。第二:可能漏檢文件??蛻舳送ㄟ^ftp命令“dir”取得ftp文件修改時間只能精確到分鐘,即使逐個文件再次通過ftp命令“quotemdtm指定ftp文件名稱”取得指定ftp文件的修改時間也只能精確到秒,且精確到秒方式需要逐個交互消耗較大;若文件在1秒內(nèi)有新修改取得的修改時間是不變的,則不會被當做新增文件,在此場景下就會出現(xiàn)漏檢文件,文件有修改確未能下載。第三:檢測的效率低。按照此專利申請?zhí)峁┑臋z測方式,服務(wù)器端任何一個文件都需與記錄下載成功的本地配置文件進行全記錄比對,在ftp服務(wù)器文件量較多、本地配置文件記錄條數(shù)較多的情況下檢測效率低,低到一定程度就會導(dǎo)致不可用。第四。無法持續(xù)運行:配置文件中存儲了所有下載成功文件的修改時間,且沒給出配置文件的清理機制,隨著下載文件數(shù)量的增多,配置文件將無限擴大,對新記錄寫入配置文件帶來性能影響,也會給客戶端機器帶來存儲壓力,導(dǎo)致無法持續(xù)運行。
2016年9月在成都大學學報(自然科學版)第35卷第3期234至239頁刊出張志強、鄭加林、王偉鈞、蘇長明和黎忠文發(fā)表的“一種自適應(yīng)ftp服務(wù)器的增量文件下載算法”,此算法在文件下載正常結(jié)束后,會將該文件在ftp中的路徑地址、文件名、文件修改時間和文件大小等屬性值寫入日志文件保存(日志文件既可以存儲在ftp上,也可以存儲在客戶端)當搜索ftp增量文件時,算法會將文件在ftp中的屬性信息與日志文件中的屬性信息進行匹配檢查.當匹配成功,表示該文件已經(jīng)下載完成,不是增量文件,不再重復(fù)下載;否則表示為新的增量文件,如果是增量文件,則下載該文件。
上述算法存在效率低和無法持續(xù)運行的兩個主要缺陷:第一:檢測的效率低。檢測時會將ftp服務(wù)器的所有文件屬性與日志文件所有記錄的屬性進行比對,在ftp服務(wù)器文件量較多、本地配置文件記錄條數(shù)較多的情況下檢測效率低,低到一定程度就會導(dǎo)致不可用。第二:無法持續(xù)運行:算法實現(xiàn)方式是在文件下載成功后將ftp中的路徑地址、文件名、文件修改時間和文件大小等屬性值寫入日志文件保存,未提出此日志文件的清理策略,隨著運行時間推移,此日志文件將無限擴大,對新記錄寫入日志文件帶來性能影響,也會給客戶端機器帶來存儲壓力,最終導(dǎo)致無法持續(xù)運行。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提供一種克服上述問題或者至少部分地解決上述問題的ftp服務(wù)器新增文件檢測下載方法及裝置。
本發(fā)明提供的一種ftp服務(wù)器新增文件檢測下載方法,包括以下步驟:
掃描指定目錄,得到所述指定目錄下的ftp對象列表;
當所述ftp對象列表中的ftp對象為文件時,判斷所述文件是否滿足預(yù)設(shè)的第一條件,其中,所述第一條件包括以下條件中的一個或多個:文件大小符合策略設(shè)置、文件名稱符合正則過濾、文件的修改時間不超期;
當所述文件滿足所述第一條件時,判斷所述文件的修改時間是否晚于所述文件所在目錄的最新下載時間,當所述文件的修改時間晚于所述文件所在目錄的最新下載時間時,下載所述文件。
本發(fā)明還提供了一種ftp服務(wù)器新增文件檢測下載裝置,包括:掃描模塊、文件處理模塊;
所述掃描模塊,用于掃描指定目錄,得到所述指定目錄下的ftp對象列表;
所述文件處理模塊,用于當所述ftp對象列表中的ftp對象為文件時,判斷所述文件是否滿足預(yù)設(shè)的第一條件;當所述文件滿足所述第一條件時,判斷所述文件的修改時間是否晚于所述文件所在目錄的最新下載時間,當所述文件的修改時間晚于所述文件所在目錄的最新下載時間時,下載所述文件,其中,所述第一條件包括以下條件中的一個或多個:文件大小符合策略設(shè)置、文件名稱符合正則過濾、文件的修改時間不超期。
本發(fā)明有益效果如下:
本發(fā)明通過設(shè)置第一預(yù)設(shè)條件,使得有效新增文件的判斷不再像通常使用的與所有已下載列表每條記錄進行比對的方式,而是通過文件過期判斷、目錄最新下載時間、比對時長內(nèi)的“目錄文件列表”里與待判斷文件修改時間一致的列表比對等遞減判斷方式減少了判斷次數(shù),提升了整體判斷速度。
附圖說明
圖1是本發(fā)明方法實施例的ftp服務(wù)器新增文件檢測下載方法的流程圖;
圖2是本發(fā)明方法實施例實例1的ftp服務(wù)器新增文件檢測下載方法的流程圖;
圖3是本發(fā)明裝置實施例的ftp服務(wù)器新增文件檢測下載裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
為了解決現(xiàn)有技術(shù)中檢測的效率低、可能漏檢文件、無法持續(xù)運行的問題,本發(fā)明提供了一種ftp服務(wù)器新增文件檢測下載方法及裝置,以下結(jié)合附圖以及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。
根據(jù)本發(fā)明的方法實施例,提供了一種ftp服務(wù)器新增文件檢測下載方法,圖1是本發(fā)明方法實施例的ftp服務(wù)器新增文件檢測下載方法的流程圖,如圖1所示,根據(jù)本發(fā)明方法實施例的ftp服務(wù)器新增文件檢測下載方法包括如下處理:
s101:掃描指定目錄,得到所述指定目錄下的ftp對象列表。
s102:當所述ftp對象列表中的ftp對象為文件時,判斷所述文件是否滿足預(yù)設(shè)的第一條件,其中,所述第一條件包括以下條件中的一個或多個:文件大小符合策略設(shè)置、文件名稱符合正則過濾、文件的修改時間不超期。
s103:當所述文件滿足所述第一條件時,判斷所述文件的修改時間是否晚于所述文件所在目錄的最新下載時間,當所述文件的修改時間晚于所述文件所在目錄的最新下載時間時,下載所述文件。
進一步的,當所述文件不滿足所述第一條件時,不進行下載。
其中,所述文件所在目錄的最新下載時間在預(yù)設(shè)的各目錄最新下載時間列表中查找得到。
進一步的,本發(fā)明的方法實施例還包括以下步驟:
當所述ftp對象列表中的ftp對象為子目錄時,判斷所述子目錄是否滿足預(yù)設(shè)的第二條件,其中,所述第二條件包括以下條件中的一個或兩個:子目錄名稱符合正則過濾、子目錄的修改時間不超期;
當所述子目錄滿足所述第二條件時,將所述子目錄作為所述指定目錄,掃描指定目錄得到所述子目錄下的ftp對象列表,判斷所述子目錄下的ftp列表對象,并按照判斷結(jié)果進行下載。
當所述子目錄不滿足所述第二條件時,則繼續(xù)判斷所述ftp對象列表中的下一個ftp對象。
具體的,判斷文件或子目錄的修改時間是否超期包括以下步驟:
利用當前時間減去預(yù)設(shè)時長得到超期時間;
若所述文件或子目錄的修改時間早于所述超期時間,則所述文件或子目錄的修改時間超期。
進一步的,本發(fā)明方法實施例所述的ftp服務(wù)器新增文件檢測下載方法,還包括以下步驟:
當所述文件的修改時間早于所述文件所在目錄的最新下載時間時,判斷所述文件的修改時間是否早于所述文件所在目錄的最早比對時間,當所述文件的修改時間早于所述文件所在目錄的最早比對時間時,不進行下載,其中,所述文件所在目錄的最早比對時間由所述文件所在目錄的最新下載時間減去預(yù)設(shè)比對時長得到;
當所述文件的修改時間晚于所述文件所在目錄的最早比對時間時,在預(yù)設(shè)的各目錄已下載文件屬性信息列表中找到與所述文件的修改時間一致的列表子集,如果所述文件的屬性信息與所述列表子集有匹配項時,不進行下載;如果所述文件的屬性信息與所述列表子集沒有匹配,下載所述文件。
進一步的,本發(fā)明方法實施例所述的ftp服務(wù)器新增文件檢測下載方法,還包括以下步驟:
將下載成功的文件屬性記錄到所述各目錄已下載文件屬性信息列表中;
當所述下載成功的文件的修改時間晚于所述文件所在目錄的最新下載時間時,利用所述下載成功的文件的修改時間更新所述各目錄最新下載時間列表。
進一步的,本發(fā)明方法實施例所述的ftp服務(wù)器新增文件檢測下載方法,還包括以下步驟:
清理所述各目錄最新下載時間列表及所述各目錄已下載文件屬性信息列表中按照策略判斷不再使用的信息。
本發(fā)明方法實施例通過超期時長、最早比對時間、子目錄超時判斷的配置,結(jié)合各目錄的最新下載時間及各目錄比對時長內(nèi)最新下載的文件屬性信息列表的記錄信息,使得有效新增文件的判斷不再像通常使用的與所有已下載列表每條記錄進行比對的方式,而是通過文件過期判斷、目錄最新下載時間、比對時長內(nèi)的“目錄文件列表”里與待判斷文件修改時間一致的列表比對等遞減判斷方式減少了判斷次數(shù),提升了整體判斷速度。同時提出了記錄信息內(nèi)存對象及文件相結(jié)合的方式,并給出了持久化、初始化和清理機制,提升了運行速度和可靠性,保證了應(yīng)用本發(fā)明方式的應(yīng)用系統(tǒng)可持續(xù)運行。另外通過分目錄方式記錄各目錄下ftp文件對象文件名、文件修改時間和文件大小的全屬性信息,杜絕了ftp新增文件部分屬性變化而判斷疏漏的情況,提高了通用性,能適應(yīng)只讀方式下載ftp文件的所有場景。
為了更加詳細的說明本發(fā)明的方法實施例,給出實例1,圖2是本發(fā)明方法實施例實例1的ftp服務(wù)器新增文件檢測下載方法的流程圖,如圖2所示,ftp服務(wù)器新增文件檢測下載方法包括以下步驟:
(1)初次啟動時從持久化目錄讀取獲取策略對應(yīng)的各目錄最新下載時間列表及各目錄已下載文件屬性信息列表并初始化到內(nèi)存對象,設(shè)定任務(wù)運行狀態(tài)標識的初始狀態(tài),將獲取策略中配置的cron表達式在作業(yè)調(diào)度系統(tǒng)注冊,進入第(2)步的掃描任務(wù)作業(yè)調(diào)度。
在本發(fā)明中,創(chuàng)建了以下數(shù)據(jù)結(jié)構(gòu):
各目錄最新下載時間列表:用于記載所有目錄最新一次文件下載的時間,分為內(nèi)存對象和磁盤持久化文件兩種形態(tài),內(nèi)存對象做新增文件檢測判斷,持久化文件則是為了提升系統(tǒng)的穩(wěn)固性,在內(nèi)存信息丟失后可通過持久化文件進行初始化。此文件記錄條數(shù)與獲取規(guī)則對應(yīng)的目錄個數(shù)對應(yīng),總量很少,因此每個獲取規(guī)則對應(yīng)一個文件,新增、修改或刪除導(dǎo)致記錄有變化時時做全覆蓋寫入,為了避免寫入過程中的可能故障導(dǎo)致問題,此配置文件同時寫入一主、一備兩份。
各目錄已下載文件屬性信息列表:用于記載目錄比對時間內(nèi)的已下載文件名稱、文件大小、修改時間等屬性信息的記錄列表,每個目錄對應(yīng)一個已下載文件屬性列表,分為內(nèi)存對象和磁盤持久化文件兩種形態(tài),兩者作用與分工與“各目錄最新下載時間列表”一致,考慮記錄數(shù)量較多且更改頻繁,每個目錄對應(yīng)一個文件,以追加方式記錄最新內(nèi)容,并按照設(shè)定時長(比如十分鐘)做文件分割,做清理時以文件為單位進行刪除,規(guī)避了讀、寫沖突,減少了io操作。
ftp服務(wù)器信息:記錄ftp服務(wù)器的ip、用戶、密碼(des可逆加密)、編碼、時區(qū)等屬性信息。
ftp文件下載策略配置信息:記錄與新增文件檢測、下載相關(guān)的配置信息,主要配置項如下:
√任務(wù)調(diào)度配置:配置任務(wù)調(diào)度策略,采用了通用的cron表達式方式。
√ftp服務(wù)器信息配置:選用某個已配置的ftp服務(wù)器信息,主要是考慮一個ftp服務(wù)器多個無關(guān)路徑需要配置文件獲取策略時,通過選用某個已配置的ftp服務(wù)器信息的方式可復(fù)用ftp服務(wù)器信息。
√ftp服務(wù)器路徑:配置本獲取規(guī)則指定的ftp服務(wù)器路徑。
√超期時長:設(shè)定修改時間超期的時長,當前時間減去此設(shè)定時長得到超期時間,文件修改時間早于上述計算的超期時間認為此文件已超期,不予下載。在氣象領(lǐng)域文件資料一般會有時限要求,過期的文件對于后續(xù)業(yè)務(wù)應(yīng)用已失去作用,還可能引起混淆和帶來負面影響,下載本身也是一種消耗,因此需規(guī)避過期文件的下載,比如通常數(shù)值預(yù)報中的背景場資料不超12小時,預(yù)報報文資料不超3小時,實況報不超1小時,自動觀測資料不超5分鐘,此參數(shù)可結(jié)合業(yè)務(wù)需要設(shè)定恰當?shù)某跁r長,建議盡量小,但又不至于缺失有效文件。
√文件名稱過濾配置:配置符合下載要求的文件名,采用正則表達式方式,文件名不符合正則表達式規(guī)則的,認為是不需要的文件不予下載;正則表達式配置信息為空時不做此項判斷。
√文件大小質(zhì)量控制范圍:設(shè)定文件大小的控制范圍,不在范圍內(nèi)的文件不予下載,比如氣象數(shù)值預(yù)報背景場資料單個文件大小約在45m至55m之間,就可以設(shè)定一個合理的控制范圍,避免將正在生成過程中的文件下載下來浪費帶寬資源;不設(shè)定文件大小范圍時不做此項判斷。
√子目錄是否包含:設(shè)定是否處理ftp服務(wù)器路徑下的子目錄:若包含,則會遞歸處理子目錄;不包含,則會忽略子目錄。
√子目錄是否判斷修改時間超時:針對子目錄自身的修改時間是否要判斷修改時間超時的設(shè)定,若設(shè)定了需要判斷,子目錄修改時間早于“文件修改時間超期時長”參數(shù)設(shè)定值計算得到的超期時間那就認為此子目錄已超期,不會再遞歸進去此子目錄進行判斷,比如針對氣象數(shù)值預(yù)報gfs背景場資料下載目錄,每天會先后生成包含年月日時次的4個目錄yyyymmdd00、yyyymmdd06、yyyymmdd12、yyyymmdd18,ftp服務(wù)器一般會存放一個月的文件,進行上述設(shè)定后,就可以在子目錄一級判斷進入需要下載的最新日前時次的目錄,可大量減少需要判斷的文件;若設(shè)定了“子目錄是否判斷修改時間超時”不判斷,則不會考慮子目錄自身修改時間是否過期,不判斷的設(shè)定一般針對目錄建立后修改時間很久未更新,但目錄中的文件卻有變化且需要下載的場景,此場景若屬于固定的接口目錄,通常建議針對此接口目錄再細分設(shè)定下載策略,避免和其他目錄混雜在一個下載策略中性能受影響。
√子目錄名稱過濾:設(shè)定子目錄名稱的正則表達式過濾規(guī)則,不符合表達式規(guī)則子目錄不進行判斷、下載處理;不設(shè)定時不做此項判斷。
√已下載文件屬性信息列表比對時限:表示的含義是某目錄最新下載時間減去此時限得到的比對開始時間,文件修改時間在比對開始時間之前的文件認為已確定下載過,不再進行比對和下載,否則與已下載文件屬性信息列表記錄進行比對,比對有完全匹配項的,認為已下載且無變化,不再進行下載,其他情況認為未下載或者有更新,將進行下載。此時限默認時長是0,只有在特定ftp服務(wù)器后放置的文件修改時間比先放置文件修改時間更早的情況下才會配置合適的數(shù)值,比如在linux系列服務(wù)器中,程序從生成目錄mv移動到ftp下載目錄時,文件修改時間不會變化,就可能發(fā)生上述情況,此情景下若不設(shè)定比對時限就會由于后放置的文件修改時間早于目錄的最新下載時間而導(dǎo)致后放置的文件漏下載。
√本地文件下載存儲路徑:設(shè)定下載文件存儲的本地路徑。
(2)按照cron表達式配置的調(diào)度策略啟動ftp掃描任務(wù),進入第(3)步具體任務(wù)處理操作。
(3)通過“任務(wù)運行狀態(tài)標識”進行本項任務(wù)的互斥運行檢測,判斷此任務(wù)上次調(diào)用是否還再運行中:有任務(wù)運行就結(jié)束本次掃描任務(wù),等待掃描任務(wù)的下次調(diào)度運行;沒有任務(wù)運行將“任務(wù)運行狀態(tài)標識”設(shè)置為運行中,繼續(xù)第(4)步登錄、指定目錄掃描調(diào)用操作。
(4)按照策略配置的ftp服務(wù)器ip、用戶、密碼信息,登錄ftp服務(wù)器,按照策略配置指定的獲取目錄調(diào)用第(5)步的指定目錄掃描操作。
(5)掃描指定目錄,得到此目錄下的子目錄及文件ftp對象列表,此ftp對象列表按照修改時間從先到后正序排列,針對得到ftp對象列表進行第(6)步的列表遍歷操作。
(6)循環(huán)遍歷此ftp對象列表,逐一進行判斷,首先判斷是文件還是子目錄,若是子目錄,子目錄修改時間不超期,且名稱符合子目錄正則過濾,就將指定目錄設(shè)定為此子目錄,遞歸調(diào)用第(5)步;否則進入第(7)步的文件判斷操作。
(7)若是文件,判斷此文件大小是否符合策略配置,名稱是否符合文件名正則過濾,通過修改時間判斷文件是否過期:當前時間減去此設(shè)定時長得到超期時間,文件修改時間早于此時間的屬于過期文件,三個條件若有不符合項認為此文件不符合下載策略要求,不進行下載,繼續(xù)第(6)步的列表循環(huán)操作;完全滿足初步判斷的三個條件后再繼續(xù)第(8)步與所在目錄最新下載時間的比較判斷。
(8)根據(jù)內(nèi)存中的“各目錄最新下載時間列表”對象找出此文件所在目錄的最新下載時間,判斷文件修改時間若晚于所在目錄的最新下載時間,這里未找到所在目錄的最新下載時間的情況也判定為晚于(比如首次進行下載時就無時間記錄),就進行第(11)步下載操作;否則進行第(9)步的根據(jù)目錄最新下載時間及“比對時長”的向前比對的判斷。
(9)使用“各目錄最新下載時間列表”對象記錄的文件所在目錄最新修改時間減去策略配置中設(shè)置的“比對時長”得到此目錄的“最早比對時間”:如果此文件修改時間早于此“最早比對時間”認為已下載過,不再進行下載,繼續(xù)第(6)步的列表循環(huán)操作;否則繼續(xù)進行第(10)步的“目錄已下載文件屬性信息列表”比對判斷。
(10)從“所有目錄已下載文件屬性信息列表”map對象中找出本文件所在目錄作為key鍵對應(yīng)的“目錄已下載文件屬性信息列表”中與待檢測文件修改時間一致的列表子集,此文件屬性信息與此列表子集進行比對,若有匹配項,認為此文件已有過下載,且無變化,不再進行下載,繼續(xù)第(6)步的列表循環(huán)操作;否則認為此文件未經(jīng)下載或有新的變化,需要進行下載,進行第(11)步下載操作。
(11)進行文件的下載操作,若下載失敗,此文件會在下次調(diào)度時再做判斷、下載,繼續(xù)第(6)步的列表循環(huán)操作;成功下載后進行第(12)步記錄“目錄已下載文件屬性信息列表”。
(12)將下載成功的文件屬性記錄到內(nèi)存記錄的“目錄已下載文件屬性信息列表”中,并持久化追加記錄到磁盤記載的“目錄已下載文件屬性信息列表”,繼續(xù)第(13)步“各目錄最新下載時間列表”更新操作。
(13)如果文件修改時間晚于“各目錄最新下載時間列表”記錄的所在目錄最新下載時間,則使用文件修改時間更新此目錄的最新下載時間,并持久化到磁盤文件“各目錄最新下載時間列表”;否則無需更新和持久化。完成更新操作后繼續(xù)第(6)步的列表循環(huán)操作。
(14)第(6)步的列表循環(huán)操作完成后,執(zhí)行“各目錄最新下載時間列表”和“各目錄已下載文件屬性信息列表”對應(yīng)的持久化文件、內(nèi)存對象的清理工作,清理原則是按照策略判斷不再使用的信息即可清理,清理結(jié)束后本次調(diào)度任務(wù)完結(jié),設(shè)定此任務(wù)對應(yīng)的“運行狀態(tài)”標識為“未運行”,進入第(2)步等待任務(wù)的下一次調(diào)度。
為了驗證使用本發(fā)明提出的新增文件檢測下載的方法效果,進行了如下模擬生成、檢測獲取和統(tǒng)計清理的測試驗證。
1、模擬ftp服務(wù)器數(shù)據(jù)生成:使用模擬程序在ftp服務(wù)器上持續(xù)放置文件,文件生成規(guī)則如下:
每1分鐘生成一次,300份自動觀測文本文件修改時間一致,根據(jù)生成時間放置到如下按照時間“年月日時”定義的目錄:
/getlatest/aws/yyyymmddhh
每5分鐘生成一次,500張雷達資料二進制圖像文件修改時間一致,根據(jù)生成時間放置到如下按照時間“年月日時”定義的目錄:
/getlatest/rad/yyyymmddhh
2、獲取規(guī)則配置:使用通過ftp只讀用戶配置兩個獲取規(guī)則針對上述兩個目錄/getlatest/aws/和/getlatest/rad/分別進行ftp文件資料獲取:自動觀測文件獲取策略設(shè)定超時時間5分鐘,雷達圖文件獲取策略設(shè)定超時時間15分鐘,比對時長均為0分鐘,均包含子目錄且針對子目錄設(shè)置判斷修改時間超時。
3、下載結(jié)果統(tǒng)計及文件清理:針對下載下來的文件與ftp存儲的文件對應(yīng)的md5摘要信息進行比對,比對發(fā)現(xiàn)不一致進行問題記錄,比對一致時進行日志記錄,并刪除已下載文件;及時進行清理已子過期目錄下的ftp服務(wù)器文件避免磁盤爆滿(此清理不會對按照本發(fā)明進行判斷的計算產(chǎn)生偏差)。
按照上述方式,連續(xù)運行30天,共生成自動觀測文本文件1296萬個,雷達圖文件432萬張;模擬的所有文件均成功下載,每個文件摘要信息均比對一致,運行過程中前后性能比較平穩(wěn),各對象更新、清理有序,無垃圾數(shù)據(jù)殘留。當ftp服務(wù)器存儲歷史資料達一個月時,雷達圖存量432萬,自動觀測文本文件1296萬,按照以往傳統(tǒng)的新增文件完全比對的方式,服務(wù)器每一個文件與本地記錄的每一個文件完全比對一次,那么雷達圖新增判斷計算量將達到432萬*432萬=18.6624億萬次,自動觀測文件的判斷計算量更是高達1296萬*1296萬=167.9616億萬次,一輪判斷的計算量如此大均會導(dǎo)致無法正常檢測、難以持續(xù)運行的后果;同樣場景按照本發(fā)明檢測下載方式,考慮一輪檢測判斷計算最大值,子文件夾超期判斷次數(shù)是720次,然后進入子文件夾對文件進行判斷,除了最新生成的一批文件,其他更早生成的文件按照時間超時時長或目錄最新下載時間就可以做出無需下載的判斷,這樣自動觀測文件判斷次數(shù)最多為17700次,最后生成的300個文件與內(nèi)存對象記錄的同時間下載文件屬性記錄集進行最多比對次數(shù)是(1+299)*300/2=45000次,合計63420次;雷達圖文件通過超時時長或目錄最新下載時間判斷不需下載文件的次數(shù)是5900,最后通過與內(nèi)存對象記錄的同時間下載文件屬性記錄集比對方式判斷次數(shù)是(1+99)*100/2=5000次,合計11620次。可以明顯看出計算量與傳統(tǒng)方式相比差距非常巨大;本地磁盤io只有在持久化下載成功文件屬性信息記錄時才會產(chǎn)生,新增文件的檢測判斷完全在內(nèi)存中即可完成,運算速度非??臁?/p>
單就此場景下的新增文件檢測邏輯運算而言,上述不足10萬量級的判斷計算,普通pc就可在毫秒級完成;而以往傳統(tǒng)完全比對方式導(dǎo)致的18.6624億萬次計算量在同樣pc測算耗費的時間將達到82天,167.9616億萬次計算時間更是高達745天。
本發(fā)明提出的方法對ftp服務(wù)器不需做任何侵入部署,下載后的文件可自由處理(常規(guī)同步軟件同步過來的文件不能再做修改、轉(zhuǎn)移等操作處理,否則會引發(fā)再次同步),理論計算及實際驗證的結(jié)果均表明本發(fā)明提出的新增文件檢測下載方式,效率非常高、下載結(jié)果完整,可持續(xù)運行,穩(wěn)定性較好,整體應(yīng)用效果非常突出,較好滿足了只讀ftp服務(wù)器文件共享下載新增文件檢測、下載的要求。本發(fā)明較為通用,實現(xiàn)簡單,檢測高效,下載準確,達到了應(yīng)用的要求。
本發(fā)明的裝置實施例與方法實施例相對應(yīng),根據(jù)本發(fā)明的裝置實施例,提供了一種ftp服務(wù)器新增文件檢測下載裝置,圖3是本發(fā)明裝置實施例的ftp服務(wù)器新增文件檢測下載裝置的結(jié)構(gòu)示意圖,如圖3所示,根據(jù)本發(fā)明裝置實施例的ftp服務(wù)器新增文件檢測下載裝置包括:掃描模塊30、文件處理模塊32,以下對本發(fā)明實施例的各個模塊進行詳細的說明。
所述掃描模塊30,用于掃描指定目錄,得到所述指定目錄下的ftp對象列表;
所述文件處理模塊32,用于當所述ftp對象列表中的ftp對象為文件時,判斷所述文件是否滿足預(yù)設(shè)的第一條件;當所述文件滿足所述第一條件時,判斷所述文件的修改時間是否晚于所述文件所在目錄的最新下載時間,當所述文件的修改時間晚于所述文件所在目錄的最新下載時間時,下載所述文件,其中,所述第一條件包括以下條件中的一個或多個:文件大小符合策略設(shè)置、文件名稱符合正則過濾、文件的修改時間不超期。
進一步的,本發(fā)明裝置實施例的ftp服務(wù)器新增文件檢測下載裝置,還包括子目錄處理模塊:
所述子目錄處理模塊,用于當所述ftp對象列表中的ftp對象為子目錄時,判斷所述子目錄是否滿足預(yù)設(shè)的第二條件;當所述子目錄滿足所述第二條件時,將所述子目錄作為所述指定目錄,掃描指定目錄得到所述子目錄下的ftp對象列表,進行所述子目錄下的ftp對象的判斷和操作;其中,所述第二條件包括以下條件中的一個或兩個:子目錄名稱符合正則過濾、子目錄的修改時間不超期。
在本發(fā)明裝置實施例中所述指定目錄為按照預(yù)設(shè)的策略配置指定的獲取目錄、及當所述子目錄滿足所述兩個條件時得到的子目錄。
所述文件處理模塊32,還用于:
當所述文件的修改時間早于所述文件所在目錄的最新下載時間時,判斷所述文件的修改時間是否早于所述文件所在目錄的最早比對時間,當所述文件的修改時間早于所述文件所在目錄的最早比對時間時,不進行下載,其中,所述文件所在目錄的最早比對時間由所述文件所在目錄的最新下載時間減去預(yù)設(shè)比對時長得到;
當所述文件的修改時間晚于所述文件所在目錄的最早比對時間時,在預(yù)設(shè)的各目錄已下載文件屬性信息列表中找到與所述文件的修改時間一致的列表子集,如果所述文件的屬性信息與所述列表子集有匹配項時,不進行下載;如果所述文件的屬性信息與所述列表子集沒有匹配,下載所述文件。
進一步的,本發(fā)明裝置實施例的ftp服務(wù)器新增文件檢測下載裝置,還包括更新模塊、及清理模塊:
所述更新模塊,用于將下載成功的文件屬性記錄到所述各目錄已下載文件屬性信息列表中;當所述下載成功的文件的修改時間晚于所述文件所在目錄的最新下載時間時,利用所述下載成功的文件的修改時間更新所述各目錄最新下載時間列表;
所述清理模塊,用于清理所述各目錄最新下載時間列表及所述各目錄已下載文件屬性信息列表中按照策略判斷不再使用的信息。
以上所述僅為本發(fā)明的實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。