武漢軟件工程職業(yè)學(xué)院 郭 勇
利用VBScript實(shí)現(xiàn)ILAS II 2.0數(shù)據(jù)自動(dòng)備份
武漢軟件工程職業(yè)學(xué)院 郭 勇
ILAS II系統(tǒng)是目前國(guó)內(nèi)用戶最多的圖書館自動(dòng)化集成管理系統(tǒng),但該軟件在數(shù)據(jù)備份功能上不夠完善,針對(duì)ILASII系統(tǒng)這項(xiàng)功能的缺失,筆者運(yùn)用VBScript程序開發(fā)出數(shù)據(jù)自動(dòng)備份功能的腳本,實(shí)現(xiàn)了異地?cái)?shù)據(jù)備份的自動(dòng)化,從而降低了系統(tǒng)管理員的工作強(qiáng)度,優(yōu)化了圖書館信息技術(shù)部門的業(yè)務(wù)水平。
ILAS II 2.0;數(shù)據(jù)自動(dòng)備份;VBScript
ILAS II 2.0(Inte—grated Library Auto mation Syestem),它是上世紀(jì)八十年代作為國(guó)家重點(diǎn)科技項(xiàng)目下達(dá)、由深圳圖書館承擔(dān)并組織開發(fā)的全套圖書館自動(dòng)化系統(tǒng)。采用客戶機(jī)/服務(wù)器(C/S)模式,主服務(wù)器系統(tǒng)能在各種平臺(tái)如IBM AIX、IRIX、SUN Solaris、SCO UNIX及其它版本的UNIX下運(yùn)行,客戶端工作站以windows平臺(tái)為依托,支持國(guó)家標(biāo)準(zhǔn)大字符集(GBK),以Visual C++等程序語(yǔ)言為開發(fā)工具,使用TCP/IP通信協(xié)議,數(shù)據(jù)庫(kù)采用大型分布式數(shù)據(jù)庫(kù)管理系統(tǒng)——LDBMS。
盡管ILAS系統(tǒng)是目前國(guó)內(nèi)用戶最多的圖書館自動(dòng)化集成管理系統(tǒng),但該系統(tǒng)卻未將數(shù)據(jù)備份功能集成于內(nèi),需要管理員采用手工進(jìn)行日常備份。數(shù)據(jù)是圖書館的核心,編目、典藏、流通、OPAC等等功能的實(shí)現(xiàn)均基于數(shù)據(jù)庫(kù)軟件技術(shù)對(duì)底層數(shù)據(jù)進(jìn)行各項(xiàng)操作,數(shù)據(jù)一旦發(fā)生紊亂或丟失將導(dǎo)致圖書館業(yè)務(wù)停滯癱瘓以及館藏的流失,造成無法彌補(bǔ)的損失。數(shù)據(jù)備份的重要性,只有在數(shù)據(jù)丟失后才能深刻體會(huì)到,如果系統(tǒng)管理員不幸遭遇到“多么痛的領(lǐng)悟”,為時(shí)已晚,損失已不可逆轉(zhuǎn)的產(chǎn)生,無法再進(jìn)行補(bǔ)救。因此,防患于未然,充分制定好完善的數(shù)據(jù)備份方案才是避免損失的最佳策略。
目前常用的備份方式有硬盤雙工備份,即在ILAS服務(wù)器上配置兩個(gè)相同規(guī)格的硬盤做成Raid1,使系統(tǒng)運(yùn)行時(shí)同時(shí)向兩個(gè)硬盤寫數(shù)據(jù)。如果其中一個(gè)硬盤損壞,并不會(huì)影響系統(tǒng)的運(yùn)行,硬盤雙工的缺陷是無法解決服務(wù)器非硬盤硬件故障造成的系統(tǒng)癱瘓或當(dāng)人為誤操作、病毒、數(shù)據(jù)錯(cuò)誤等造成的邏輯錯(cuò)誤發(fā)生時(shí),硬盤雙工備份也不能做出判斷,停止錯(cuò)誤數(shù)據(jù)寫入,只會(huì)被動(dòng)地將錯(cuò)誤數(shù)據(jù)寫入數(shù)據(jù)庫(kù)并且復(fù)制一遍。有條件的圖書館還可采用安全性更好、成本也相對(duì)更高的雙機(jī)容錯(cuò)方案,即配置兩臺(tái)系統(tǒng)相同的服務(wù)器,一旦ILAS服務(wù)器出現(xiàn)故障,可以立即啟動(dòng)備用服務(wù)器,這種方式的缺陷與硬盤雙工備份方式一樣,無法對(duì)錯(cuò)誤數(shù)據(jù)的寫入進(jìn)行識(shí)別,依然存在數(shù)據(jù)風(fēng)險(xiǎn)。
在采取實(shí)時(shí)雙硬件備份的基礎(chǔ)上,還應(yīng)該對(duì)數(shù)據(jù)進(jìn)行非實(shí)時(shí)性的異地周期性備份,因?yàn)檫@種備份方式不是實(shí)時(shí)性的,故一旦發(fā)生實(shí)時(shí)錯(cuò)誤數(shù)據(jù)寫入故障,就可以從數(shù)據(jù)存檔中調(diào)出最近時(shí)間節(jié)點(diǎn)的正??截悓?duì)數(shù)據(jù)進(jìn)行恢復(fù),從而避免了數(shù)據(jù)完全丟失帶來的毀滅性打擊。為了將發(fā)生數(shù)據(jù)故障的損失減小到最低程度,備份周期應(yīng)該較短,周期長(zhǎng)度不應(yīng)超過24小時(shí)。這種周期性備份與硬盤雙工備份的區(qū)別在于,后者實(shí)時(shí)將數(shù)據(jù)自動(dòng)寫入冗余盤,前者是靠人工操作完成周期性數(shù)據(jù)拷貝,并且拷貝可以存儲(chǔ)于網(wǎng)絡(luò)中的客戶端電腦。如果完全采用手工方式通過輸入DOS命令將數(shù)據(jù)庫(kù)進(jìn)行打包再傳輸?shù)娇蛻舳穗娔X,然后再對(duì)每個(gè)拷貝按時(shí)間順序進(jìn)行管理,如此頻繁的備份頻率和繁瑣的操作不僅費(fèi)時(shí),而且還得注意力高度集中不能在輸入命令過程中出錯(cuò),這對(duì)于系統(tǒng)管理員來說是一件苦差。那么能否應(yīng)用軟件技術(shù)實(shí)現(xiàn)自動(dòng)數(shù)據(jù)備份從而將系統(tǒng)管理員從這項(xiàng)“苦差”中解脫出來呢?答案是肯定的,筆者自身也從事系統(tǒng)管理員的工作,于是將編程經(jīng)驗(yàn)應(yīng)用到這一項(xiàng)工作任務(wù)的解決方案中,開發(fā)出VBS腳本程序?qū)崿F(xiàn)了ILASII數(shù)據(jù)備份、傳輸、管理的自動(dòng)化。
VBScript是Visual Basic Script的簡(jiǎn)稱,即 Visual Basic腳本語(yǔ)言,有時(shí)也被縮寫為VBS。它是基于Visual Basic程序語(yǔ)言的腳本語(yǔ)言,是IIS(互聯(lián)網(wǎng)信息服務(wù),InternetInformation Services)的默認(rèn)源程序語(yǔ)言。VBScript最開始是通過事件驅(qū)動(dòng)來擴(kuò)展客戶端HTML的功能,可在網(wǎng)頁(yè)上處理、控制對(duì)象,它能與HTML頁(yè)面很好的結(jié)合使用。另外,VBScript還提供了一些應(yīng)用對(duì)象(COM組件、WMI、WSH、ADSI)訪問系統(tǒng)中的元素,編程者可以方便地編寫腳本,用于實(shí)現(xiàn)一些特有功能,一般被用來完成重復(fù)性的Windows系統(tǒng)操作任務(wù)。筆者所編寫的VBS腳本如下(附注釋):
3.1 第一個(gè)腳本代碼
Dim WshShell Set WshShell = WScript.CreateObject("WScript. Shell")
WshShell.Run "telnet 192.168.1.240"
〈創(chuàng)建一個(gè)對(duì)象"wshshell",用WshShell對(duì)象的Run方法打開telnet程序,用它連接到IP地址為192.168.1.240的服務(wù)器〉
WScript.sleep 6000
〈延時(shí)6000毫秒〉
WshShell.AppActivate"c:"
〈〉
WshShell.SendKeys"root"
WshShell.SendKeys"{ENTER}"
〈鍵入帳號(hào)〉
WScript.sleep 3000
WshShell.SendKeys"******"
WshShell.SendKeys"{ENTER}"
鍵入密碼
WScript.sleep 8000
延時(shí)
WshShell.SendKeys"cd /u"
WshShell.SendKeys"{ENTER}"
〈設(shè)定當(dāng)前目錄為根目錄U盤下〉
WScript.sleep 3000
WshShell.SendKeys"rm ilasIIbf"
WshShell.SendKeys"{ENTER}"
〈壓縮ilasII_GB之前必須刪除掉上一次備份數(shù)據(jù)庫(kù)壓縮文件 〉
WScript.sleep 3000
WshShell.SendKeys"tar cvf ilasIIbf ilasII_GB"
WshShell.SendKeys"{ENTER}"
打包ilasII_GB數(shù)據(jù)庫(kù)并備份為以ilasIIbf命名的壓縮文件
3.2 第二個(gè)腳本代碼
Public t,s,x
定義3個(gè)全局變量:t,s,x
t=now
〈取得當(dāng)天日期和時(shí)間〉
s=formatdatetime(t,vbshortdate)
〈返回日期賦值于變量S〉
Sub create(fso,path)
〈定義子程序create〉
If fso.FolderExists(path) Then
Exit Sub
End If
〈如果判定指定路徑文件夾存在,則終止程序〉
If Not fso.FolderExists(fso.GetParentFolderName(path)) Then create fso,fso.GetParentFolderName(path)
End If
fso.CreateFolder(path)
〈創(chuàng)建一個(gè)指定名稱的文件夾〉
End Sub
x="e:ilasIIBF" + cstr(s)
〈將保存?zhèn)浞菸募穆窂劫x值于字符串變量x〉
Set fso = CreateObject("scripting.filesystemobject")
create fso,x
〈調(diào)用create程序,在目標(biāo)目錄下新建一個(gè)文件夾〉
set fso = Nothing
WScript.sleep 2000
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")〈打開windows命令提示窗口,等待命令的輸入〉
WshShell.Run "ftp 192.168.1.240"
〈在窗口輸入欄輸入服務(wù)器IP地址,連接到服務(wù)器〉WScript.Sleep 8000
WshShell.AppActivate"c:"
WshShell.SendKeys"root"
WshShell.SendKeys"{ENTER}"
WScript.sleep 3000
WshShell.SendKeys"******"
WshShell.SendKeys"{ENTER}"
WScript.sleep 3000
WshShell.SendKeys"ls"
WshShell.SendKeys"{ENTER}"
WScript.sleep 3000
WshShell.SendKeys"cd /u"
WshShell.SendKeys"{ENTER}"
WScript.sleep 3000
WshShell.SendKeys"{ENTER}"
〈指定服務(wù)器當(dāng)前路徑為根目錄U盤〉
WScript.sleep 3000
WshShell.SendKeys"lcd e:ilasIIbf"
WshShell.SendKeys"{ENTER}"〈設(shè)置接收備份文件的存放路徑〉
WScript.sleep 3000
WshShell.SendKeys"bin"
WshShell.SendKeys"{ENTER}"
WScript.sleep 3000
WshShell.SendKeys"get ilasIIbf"
WshShell.SendKeys"{ENTER}"
WshShell.SendKeys"{ENTER}"
WScript.sleep 300000
Set fso = CreateObject("Scripting.filesystemobject")
fso.MoveFile "E:ilasIIbfilasIIbf.*", x
移動(dòng)(剪切)備份文件至與字符串x的值同名的文件夾下
set fso = Nothing
WshShell.SendKeys"bye"
WshShell.SendKeys"{ENTER}"
3.3 第三個(gè)腳本代碼
〈第三個(gè)腳本程序依次調(diào)用第一個(gè)腳本和第二個(gè)腳本〉
createobject("wscript.shell").run "stepone.vbs"
WScript.Sleep 1300000
〈調(diào)用第一個(gè)腳本,根據(jù)ilasII_GB文件的大小為第一個(gè)腳本設(shè)定足夠的運(yùn)行時(shí)間,必須讓第一個(gè)腳本運(yùn)行結(jié)束后再啟動(dòng)第二個(gè)腳本〉
createobject("wscript.shell").run "steptwo.vbs"
〈調(diào)用第二個(gè)腳本〉
手動(dòng)執(zhí)行自動(dòng)備份程序只需雙擊打開第三個(gè)腳本程序,在備份客戶端使用windows系統(tǒng)的設(shè)置定時(shí)任務(wù)功能,設(shè)置定時(shí)腳本執(zhí)行的時(shí)間,即實(shí)現(xiàn)了ILASII數(shù)據(jù)備份、傳輸、管理的自動(dòng)化。
[1]深圳市科圖自動(dòng)化新技術(shù)應(yīng)用公司.ILAS系統(tǒng)管理員手冊(cè).2001.
郭勇(1979—),男,圖書館館員,現(xiàn)供職于武漢軟件工程職業(yè)學(xué)院。