<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      WINDOWS環境下的自動備份系統

      [摘要]上海中魯通信技術有限公司 張世富 一、 前言 由于目前在WINDOWS環境下(指WINDOWS9.X,WINDOWS 2000,WINDOWS NT等環境,以下同)的一些程序的數據文件需要經常備份,...
      上海中魯通信技術有限公司 張世富

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


      日韩精品一区二区三区高清