全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2124
推到 Plurk!
推到 Facebook!

重傳自動定時備份

 
dan59314
中階會員


發表:121
回覆:107
積分:86
註冊:2002-08-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-08 10:04:51 IP:211.23.xxx.xxx 未訂閱
可設定自動定時備份,多批專案自訂排程備份。 及其他更換桌布、Skin、啟動螢幕保護程式...等等功能。
附加檔案:28299_Autobkup.zip
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-08 20:05:23 IP:61.216.xxx.xxx 未訂閱
另一參考範例:WINDOWS環境下的自動備份系統 http://www.cty99.com/Templet/Project1.Asp?ID=1344 上海中魯通信技術有限公司 張世富     一、 前言  由於目前在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系統下 某目錄下的檔案和某幾個目錄,週五進行靜態備份,其它時間進行動態備份,每天備份一次。系統執行良好,節省了人工備份的時間 和減少了出錯誤的可能性。 因為你!再大的難題,更顯得容易!
dan59314
中階會員


發表:121
回覆:107
積分:86
註冊:2002-08-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-09 08:39:36 IP:211.23.xxx.xxx 未訂閱
good to learn.
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-09 09:40:23 IP:211.74.xxx.xxx 未訂閱
程式中有use dfsStatusBar,這是另外安裝的元件嗎??THANKS..
引言: 可設定自動定時備份,多批專案自訂排程備份。 及其他更換桌布、Skin、啟動螢幕保護程式...等等功能。
dan59314
中階會員


發表:121
回覆:107
積分:86
註冊:2002-08-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-09 10:53:03 IP:211.23.xxx.xxx 未訂閱
啊,忘記移除,請將dfsStatusBar 殺掉。 軟還要更軟,我的Artwork http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27674
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-10 14:49:52 IP:210.201.xxx.xxx 未訂閱
引言: 水喔 阿姑親一ㄟ < face="Verdana, Arial, Helvetica"> 「堅持」從洗馬桶做起 Aric
dan59314
中階會員


發表:121
回覆:107
積分:86
註冊:2002-08-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-11 09:04:52 IP:211.23.xxx.xxx 未訂閱
引言: 水喔 阿姑親一ㄟ
哈。
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-28 11:42:05 IP:61.219.xxx.xxx 未訂閱
如果能支援備份致遠端儲存設備那就更美妙了 Thomas Chiou
------
Thomas Chiou
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-06-09 06:51:49 IP:61.219.xxx.xxx 未訂閱
請問這支程式能支援只選目錄,底下的任何檔案及次目錄就會自動備份嗎? 謝謝 Thomas Chiou
------
Thomas Chiou
系統時間:2024-05-09 12:54:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!