大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> WINDOWS环境下的自动备份系统

WINDOWS环境下的自动备份系统

时间: 2021-07-31 作者:daque

上海中鲁通讯本领有限公司 张世富 一、 媒介 因为暂时在windows情况下(指windows9.x,windows 2000,windows nt等情况,以次同)的少许步调的数据文献须要常常备份,然而操纵体例或运用体例却没有供给比拟简单的备份步调。所以,须要人为举行周期性的备份,偶尔会由于处事职员的大略忘怀备份当天数据,大概不许对数据文献举行完备的备份,进而对体例数据备份的运用形成确定的感化。 二、 安排本领普通 运用delphi编制程序实行准时步调的挪用,贯串基础的dos批处置吩咐和windows的api因变量挪用,保护数据文献和数据目次的正片,同声不妨按照对数据文献的简直要务实现数据文献的动静备份和静态备份。动静备份即是在要举行备份的运用体例运转进程中举行数据文献的备份,静态备份即是经过因变量挪用遏止暂时运用步调的运转,举行数据文献的备份,备份结束挪用步调,从新运转运用步调。 三、 体例过程 备份步调的过程如次图所示: 四、 体例实行 1、 摆设文献的创造 (1) 文献正片运转文献 在运转准时步调的目次下,创造copy1.bat批处置文献,实质如次: @echo off copy %1 %2 @echo on 实行文献的正片。 (2)目次正片运转文献 在运转准时步调的目次下,创造xcopy1.bat批处置文献,实质如次: @echo off xcopy %1 %2 /e @echo on 实行目次下文献的正片。 (3)创造新目次运转文献 在运转准时步调的目次下,创造mkdir1.bat批处置文献,实质如次: @echo off mkdir %1 @echo on 实行新目次的创造。 (4)体例参数摆设文献 在运转准时步调的目次下,创造cfg.ini的批处置文献,实质如次: [server] //树立运用步调的运转文献 servername=d:\lotus\notes\notes.exe [destination] //树立备份文献和目次的头等子目次 pathname=h:\ttt\ [directorys] //需备份的目次文献 dir1=h:\play dir2=e:\api dir3=n //n结果表白备份该目次之前的目次 dir4= dir5= //不妨连接设定备份目次。 [files] //需备份的文献。 file1=h:\vss_files\hx.h file2=h:\vss_files\c*.* file3=n //n结果表白备份该文献之前的文献 file4= file5= //不妨连接设定备份文献。 [timer] //准时设定 interval=1 //timer 步调运转功夫间隙 sleep1=1 //sleep1运用发端遏止到正片的功夫间隙 sleep2=2 //sleep2发端正片到运用步调发端启用的功夫间隙 week=6 //week 表白备份的礼拜的第几天,1—7,1为礼拜日 time=220000 //time 步调启用的功夫220000表白为22:00:00 //之上功夫单元均为秒钟,而且timer大于sleep1和sleep2之和。 实行体例参数的摆设。 (5) 备份日记记载文献 经过record.txt文献记载备份的日子和备份启用的功夫。 2、 运用步调实行 (1) 在delphi的form中采用timer控件,控件参数可缺省。 (2) 参数初始化,在form的create事变里,从摆设文献中读入timer的各项参数,对体例运转参数举行初始化,重要参数为备份启用功夫,备 份的功夫间隙,静态备份功夫日子等。步调如次: procedure tsrvform.formcreate(sender: tobject); begin label2.visible:=false; lpsleep1:=strtoint(findname('timer','sleep1'))*60*1000; lpsleep2:=strtoint(findname('timer','sleep2'))*60*1000; lpinterval:=strtoint(findname('timer','interval'))*60*1000; sptime:=findname('timer','time'); ipweek:=strtoint(findname('timer','week')); timer1.interval:=lpinterval ; timer1.enabled:=true; end; (3) 创造挪用因变量,stopserver为遏止运用步调运转的因变量,startserver为启用运用步调的因变量,backupdata为数据文献的备份步调。 〈1〉procedure tsrvform.startserver(); //启用运转运用步调 var i,ret :integer; stemp :string; begin stemp:=findname('server','servername'); i:=winexec(pchar(stemp),sw_show); if i<31 then begin ret:=application.messagebox('start notesserver error!','error!',mb_ok); exit; end; end; 〈2〉procedure tsrvform.stopserver(); //遏止运转运用步调 var i,ret :integer; stemp :string; begin stemp:=findname('server','servername')+' -quit'; i:=winexec(pchar(stemp),0); if i<31 then begin ret:=application.messagebox('stop notesserver error!','error!',mb_ok); exit; end; end; 〈3〉procedure tsrvform.backupdata(); //启用数据备份步调 var sconent,sresourepath,sresourefile,sdestpath :string; stemp,sdate,sconst,sdir :string; i,j :integer; begin sdate:=formatdatetime('yyyymmdd',date()); sdestpath:=findname('destination','pathname'); stemp:=sdestpath+sdate; sconst:=stemp;//don't change this variable. sconent:='.\mkdir1.bat '+stemp; i:=winexec(pchar(sconent),0); //create data store path if i<31 then begin application.messagebox('mkdir error!','error!',mb_ok); exit; end; //copy all direstories and files j:=1; while 1=1 do begin sresourepath:=findname('directorys','dir'+inttostr(j)); j:=j+1; if sresourepath ='n' then break; //create same name directory sdir:=sconst+findlastdir(sresourepath); i:=winexec(pchar('.\mkdir1.bat '+sdir),0); //create data store path if i<31 then begin application.messagebox('mkdir error!','error!',mb_ok); exit; end; //create end sconent:='.\xcopy1.bat '+sresourepath+' '+ sdir; i:=winexec(pchar(sconent),0); if i<31 then begin application.messagebox('copy error!','error!',mb_ok); exit; end; end; //copy all files j:=1; while 1=1 do begin sresourefile:=findname('files','file'+inttostr(j)); j:=j+1; if sresourefile ='n' then break; sconent:='.\copy1.bat '+ sresourefile +' '+ sconst; i:=winexec(pchar(sconent),0); if i<31 then begin application.messagebox('copy error!','error!',mb_ok); exit; end; end; end; (4) timer准时备份步调, 取暂时功夫,按照准则天生一方法为‘yyyymmdd’的字符串,动作备份的子目次,用以表白备份数据的日子。从备份日记文献中搜索能否仍旧备份,若仍旧备份退出步调,无备份则创造备份的子目次。即使是备份为静态备份,遏止运转运用步调,若为动静备份,不遏止运用步调的运转,举行数据的备份,并按照本质的备份功夫举行延时。备份结束,记载备份日记。步调如次: procedure tsrvform.timer1timer(sender: tobject); //准时步调挪用 var f: textfile; stemp,sdate,sbegin:string; ipos:integer; begin sdate:=formatdatetime('yyyymmdd',now()); sbegin:='['+formatdatetime('hhnnss',now())+']'; //backup or not assignfile(f,'record.txt'); reset(f); ipos:=0; while not eof(f) do begin readln(f,stemp); ipos:=pos(sdate,stemp); if ipos>0 then break; end; closefile(f); if ipos>0 then exit;//already backup label2.visible:=true; if (dayofweek(date())=ipweek) and ( formatdatetime('hhnnss',now())>sptime) then begin stopsrv(); sleep(lpsleep1);//wait for lpsleep1/1000/60 minutes backupdata(); sleep(lpsleep2);//wait for lpsleep2/1000/60 minutes startsrv(); end else begin if (dayofweek(date())<>ipweek) and ( formatdatetime('hhnnss',now())>sptime) then backupdata() else begin label2.visible:=false; exit; end; end; //backup data finish,record the date and time to file1.txt stemp:= ' ['+formatdatetime('yyyymmdd',now())+'] '+sbegin+' ['+formatdatetime('hhnnss',now())+'] '; assignfile(f,'record.txt'); append(f); writeln(f, stemp);//add backup flag flush(f); { ensures that the text was actually written to file } { insert code here that would require a flush before closing the file } closefile(f); label2.visible:=false; end; (5) 步调实行中需挪用windows的api因变量winexec。 五、 体例特性 1、 运用简单,只需将执路途序、各摆设文献创造在某一目次下即可运转。 2、 参数摆设精巧,经过树立cfg.ini即可满意运用步调的挪用和实行。 3、 即不妨在windows 9.x下运转,也不妨在windows nt下运转。 4、 步调运转进程中,不必人为干涉。 5、 步调占用体例资源少。 6、 、、、、、、 六、 中断语 该备份步调仍旧经过delphi实行,在windows98,windows 2000,windows nt 4上运转胜利,该运用步调机动备份lotus notes体例下 某目次下的文献和某几个目次,周五举行静态备份,其它功夫进动作态备份,每天备份一次。体例运转杰出,俭朴了人为备份的功夫 和缩小了堕落误的大概性。 即使有对此体例感爱好的职员,不妨免费获得步调源码,与作家接洽办法,e-mail:zsf@pub.online.jn.sd.cn。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.