張仕清,許曉雪,黃高平
(1.安徽省池州市氣象局,安徽 池州 247000;2.安徽省肥東縣氣象局,安徽 合肥 231600)
隨著氣象觀測自動化業(yè)務(wù)的運(yùn)行,數(shù)據(jù)采集自動化設(shè)備不斷增加,氣象觀測數(shù)據(jù)量激增,給數(shù)據(jù)質(zhì)量和安全帶來了新的考驗。目前,氣象臺站使用的測報業(yè)務(wù)軟件為ISOS軟件,它是通過Windows系統(tǒng)復(fù)制數(shù)據(jù)備份[1],程序煩瑣,效率不高,增加了業(yè)務(wù)人員工作量,且常常由于誤操作而丟失數(shù)據(jù)。因此,為保證日集月累的海量觀測數(shù)據(jù)存儲安全,需要在自動站數(shù)據(jù)常規(guī)備份的基礎(chǔ)上,采取冗余原則,豐富數(shù)據(jù)備份功能。自動站數(shù)據(jù)備份系統(tǒng)就是在此理念下設(shè)計的應(yīng)用軟件系統(tǒng),是完善數(shù)據(jù)存儲安全措施行之有效的途徑之一。
為保證自動站氣象觀測數(shù)據(jù)安全,自動站業(yè)務(wù)用機(jī)盡量減少與外接設(shè)備互聯(lián),降低其感染計算機(jī)病毒的風(fēng)險。為達(dá)到自動站數(shù)據(jù)進(jìn)行異機(jī)備份和移動存儲介質(zhì)(移動硬盤或U盤)備份這一業(yè)務(wù)要求,備份系統(tǒng)軟件落腳計算機(jī)必須與自動站業(yè)務(wù)計算機(jī)共處同一局域網(wǎng)段內(nèi),通過建立網(wǎng)絡(luò)映射[2],進(jìn)行數(shù)據(jù)備份。
為實現(xiàn)上述要求,各地氣象臺站都按規(guī)定配備了自動站備份計算機(jī),安裝了現(xiàn)用的ISOS等業(yè)務(wù)軟件,使得現(xiàn)用業(yè)務(wù)用機(jī)遭受病毒攻擊、雷擊事故等突發(fā)事件,造成自動站計算機(jī)系統(tǒng)崩潰、損壞時,能及時啟用自動站備份計算機(jī),保證數(shù)據(jù)采集業(yè)務(wù)正常運(yùn)行[3]。基于ISOS業(yè)務(wù)軟件不同的文件夾下存有同名文件,因此,備份數(shù)據(jù)所存放的文件夾及路徑必須與現(xiàn)用計算機(jī)上的ISOS軟件結(jié)構(gòu)相同,且備份目標(biāo)盤應(yīng)存有與ISOS業(yè)務(wù)軟件系統(tǒng)結(jié)構(gòu)相同的文件夾,這樣數(shù)據(jù)即可備份到相同的文件夾下,否則,應(yīng)先創(chuàng)建ISOS業(yè)務(wù)軟件系統(tǒng)相同的文件夾后,再進(jìn)行數(shù)據(jù)備份。
自動站觀測數(shù)據(jù)應(yīng)實時在線熱備,并定期采用移動硬盤或光盤離線備份。備份內(nèi)容至少包括原始數(shù)據(jù)文件(“dataset”文件夾)、業(yè)務(wù)數(shù)據(jù)文件(“DataBase”文件夾)、參數(shù)配置文件(“Config”和“metadata”文件夾)。
離線備份頻次:原始數(shù)據(jù)文件和業(yè)務(wù)數(shù)據(jù)文件至少每月備份一次,參數(shù)配置文件變動后及時備份。為達(dá)到要求,數(shù)據(jù)備份通常采用自動數(shù)據(jù)備份和人機(jī)交互數(shù)據(jù)備份2類方式[4]。自動數(shù)據(jù)備份暨數(shù)據(jù)實時數(shù)據(jù)備份(任務(wù)計劃)實現(xiàn)自動站觀測數(shù)據(jù)實時在線熱備,通過添加到Windows任務(wù)計劃實現(xiàn)。
人機(jī)交互數(shù)據(jù)備份系統(tǒng)設(shè)計7個功能部分:實時數(shù)據(jù)備份、日數(shù)據(jù)備份、月數(shù)據(jù)備份、年數(shù)據(jù)備份、參數(shù)配置備份、建立網(wǎng)絡(luò)映射、幫助,數(shù)據(jù)備份需求內(nèi)容全部覆蓋。臺站號、映射盤符、備份數(shù)據(jù)的目標(biāo)盤符存放在文件名user的文本文件中供調(diào)用。程序運(yùn)行前,需要修改user中的參數(shù),確定用戶。自動備份和人機(jī)交互備份均應(yīng)建立網(wǎng)絡(luò)映射,將ISOS文件夾映射到備份系統(tǒng)軟件計算機(jī)上。
第一類自動備份暨數(shù)據(jù)實時數(shù)據(jù)備份(任務(wù)計劃):每天備份前一天的所有數(shù)據(jù)。由于氣象觀測要素日界有20:00、地方平均太陽24:00之分,某些要素(如日照)還需要考慮地方時差,日數(shù)據(jù)文件形成的時間不一致,因此,數(shù)據(jù)實時備份(任務(wù)計劃)需添加到Windows任務(wù)計劃中,設(shè)置每天備份時間為00:00+時差+1 min;備份00:00前一天的數(shù)據(jù)文件,這樣才能保證日分鐘數(shù)據(jù)文件數(shù)據(jù)完整。根據(jù)技術(shù)規(guī)定,日分鐘數(shù)據(jù)文件每天應(yīng)形成一個文件備份。
第二類人機(jī)交互數(shù)據(jù)備份系統(tǒng):集成創(chuàng)建網(wǎng)絡(luò)映射,實時數(shù)據(jù)備份。日數(shù)據(jù)備份、月數(shù)據(jù)備份、年數(shù)據(jù)備份、自動站參數(shù)配置文件備份于一體,如圖1所示,通過菜單選擇備份的類型進(jìn)行數(shù)據(jù)備份。目標(biāo)盤可以自由選擇,月、年數(shù)據(jù)備份時,檢索到未檢索到的數(shù)據(jù)文件備份,避免了多次重復(fù)復(fù)制,減少磁盤寫入次數(shù),有效地保護(hù)磁盤。
圖1 程序功能圖
程序運(yùn)行之前,首先要設(shè)置用戶參數(shù),用戶參數(shù)保存在user文本文件中,如圖2所示。用戶根據(jù)自身的情況修改成參數(shù),供備份數(shù)據(jù)軟件調(diào)用。具體設(shè)定如下。
圖2 用戶參數(shù)
IIiii:臺站號。系統(tǒng)運(yùn)行前,用戶應(yīng)將其改成自己的臺站號進(jìn)行保存。
xv:網(wǎng)絡(luò)映射盤符名。符名可以更改,可以隨意命名,但不能同名,不區(qū)分大小寫。
設(shè)置網(wǎng)絡(luò)映射,運(yùn)行本軟件:“地面觀測數(shù)據(jù)備份.exe”,建立網(wǎng)絡(luò)映射。如果不用已設(shè)置好的盤符名xv,運(yùn)行之前在user.txt中設(shè)置好盤符名(比如yw),否則原數(shù)據(jù)路徑無法找到。
x:設(shè)置的路徑是\IPisos。
v:設(shè)置的路徑是\IPisosdataset省名臺站號。
f:備份數(shù)據(jù)目標(biāo)盤符暨備份路徑(f可以自由選擇,本機(jī)或移動硬盤盤符)。如果程序放在備份站計算機(jī)上,最后一位f不能改為D(不分大小寫),否則備份站數(shù)據(jù)被覆蓋。
執(zhí)行Windows任務(wù)計劃,每日00:00后需備份前一天的所有數(shù)據(jù)。自動站觀測數(shù)據(jù)文件、各類狀態(tài)文件、系統(tǒng)與各類掛接設(shè)備的實時交互記錄文件等,均按文件名形成時間(以月、日為單位),形成不同的文件。需要指出的是:每月1日備份上個月最后一天的數(shù)據(jù)或上一年12月最后一天的數(shù)據(jù),其他時間備份只需要當(dāng)天日期數(shù)減1形成文件名就能實現(xiàn)。每月1日數(shù)據(jù)備份步驟是:讀取計算機(jī)系統(tǒng)當(dāng)前時間月、日數(shù)值,通過數(shù)據(jù)處理,將當(dāng)天日期數(shù)減1是否等于0來確定是否為1日,再根據(jù)月份值來判斷上個月最后一天的數(shù)值(28、29、30、31)。2月份的天數(shù)不是固定值,可以通過把年份數(shù)值除以4看能否整除來確定是否閏年或平年。
例如,在3月1日備份2月份數(shù)據(jù),程序代碼如下。
以上是對月、日數(shù)據(jù)處理,否則對其執(zhí)行數(shù)字運(yùn)算就會報錯。
在實時備份當(dāng)天當(dāng)時已存在的數(shù)據(jù)文件時,由于是實時備份數(shù)據(jù),備份數(shù)據(jù)時需避開計算機(jī)采集數(shù)據(jù)時間,以免產(chǎn)生沖突,影響數(shù)據(jù)寫入??紤]到自動站計算機(jī)采集數(shù)據(jù)時間是每分鐘的第20秒進(jìn)行,因此,備份數(shù)據(jù)最好在每分鐘的第22秒開始備份,每分鐘的第0—21秒是等待時間,如圖3所示。
圖3 實時備份等待圖
實現(xiàn)此功能程序代碼如下。
日數(shù)據(jù)備份設(shè)計初衷是發(fā)現(xiàn)本年度某天數(shù)據(jù)未備份,或者備份的某天數(shù)據(jù)不完整,需要重新備份。缺失備份的某天數(shù)據(jù)文件也可以在月、年數(shù)據(jù)備份中補(bǔ)全。程序?qū)斎氲脑路?、日?shù)數(shù)字合法性加以控制,合法的月份輸入為1—12,日數(shù)為1—31,輸入其他數(shù)字則返回重新輸入。
控制月份,日數(shù)程序合法性程序代碼如下。
月數(shù)據(jù)備份分為當(dāng)前月數(shù)據(jù)備份和歷史月(當(dāng)前月以外的)數(shù)據(jù)備份2個部分。其中當(dāng)前月數(shù)據(jù)備份備份到當(dāng)天的前一天(當(dāng)天數(shù)據(jù)不完整)。歷年小時、分鐘數(shù)據(jù)存放在各自的一個文件下,小時數(shù)據(jù)文件以月為單位,每月形成一個文件,小時數(shù)據(jù)文件采用覆蓋備份;分鐘數(shù)據(jù)以天為單位,每天形成一個文件,備份數(shù)據(jù)時檢索各文件下的數(shù)據(jù)文件,檢索到已備份了數(shù)據(jù)時自動跳過。
本月數(shù)據(jù)備份當(dāng)前月數(shù)據(jù)備份備份到當(dāng)天的前一天,可以采用循環(huán)語句加以控制,從1日循環(huán)備份數(shù)據(jù)到當(dāng)天的前一天。
本月數(shù)據(jù)日數(shù)循環(huán)控制程序代碼如下。
至于歷史月數(shù)據(jù)文件,一般較為完整,可以直接備份。
年數(shù)據(jù)備份分為歷年和本年度2個部分。本年度數(shù)據(jù)備份備份到本月的上一個月(當(dāng)月數(shù)據(jù)不完整)。采取的備份方式如同月備份,這里不再累述。
程序?qū)斎氲哪攴莺戏ㄐ约右钥刂疲戏ǖ哪攴葺斎霝?01X—202X,本程序暫設(shè)開始年份為2012年,輸入不合法年份數(shù)字,則返回重新輸入。控制年份輸入源代碼如下。
參數(shù)配置文件備份比較簡單,可以采用覆蓋式備份參數(shù)配置文件(“Config”和“metadata”文件夾)的所有文件及區(qū)站參數(shù)等,當(dāng)參數(shù)配置文件變動后應(yīng)及時備份。
綜上所述,本系統(tǒng)采用基于對話框的用戶界面,人機(jī)交互界面簡潔清晰、操作簡單、使用方便、實用性強(qiáng)。運(yùn)用此系統(tǒng),可豐富自動站數(shù)據(jù)備份功能,滿足氣象觀測數(shù)據(jù)實時在線熱備要求,對提高數(shù)據(jù)存儲效率,保證數(shù)據(jù)存儲安全具有積極作用,適合基層氣象臺站推廣使用。