转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 系统软件 >> 正文
WINDOWS环境下的自动备份系统         

WINDOWS环境下的自动备份系统

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1043 更新时间:2009/4/25 0:46:03


上海中鲁通信技术有限公司 张世富

一、 前言
由于目前在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。


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台