利用Oracle 11g 做了每周系統全備份與每日export檔、設定archive的丟出。丟出來的檔案自己依日期分別放在一個一個資料夾內,為了做異地備份,需要每天、每周去copy出這些檔案,而且是copy到異地硬碟內,不是本機其他硬碟上(特別強調是因為會影響到寫法與執行成功與否)。所以寫了一個batch file,並且設定排程來執行工作。
首先在要放batch file的同層目錄下放一個文字檔(copy_msg.txt),用來記錄copy過程訊息用。
batch file內容如下:
1: rem //rem 表示註解,command line會忽略此行
2: rem "echo.": 表示印出一行空白
3: rem ">>" : 將echo的內容以"附加"方式寫入copy_msg.txt檔內
4: rem 執行batch file第一件事: 顯示日期時間
5: echo. >> copy_msg.txt
6: echo start copy ARCHIVELOG at %date% %time% >> copy_msg.txt
7:
8: rem 切換到copy_msg.txt所在目錄下
9: cd \
10: e:
11:
12: rem 先將日期format為oracle丟出來的格式: yyyy_mm_dd,並且存在today變數內
13: set today=%date:~0,4%_%date:~5,2%_%date:~8,2%
14: echo folder name = %today% >> copy_msg.txt
15:
16: rem 印出開始做copy的訊息
17: echo start copying... >> copy_msg.txt
18:
19: rem 利用xcopy做複製,帶I參數,表示若目的資料夾不存在,自動產生
20: rem 同時將copy訊息都寫入copy_msg.txt
21: xcopy X:\<source_path>\%today%\* \\<target_server>\<target_path>\%today% /I >> copy_msg.txt
22:
23: rem 完成後也印出提示訊息
24: echo task end at %date% %time% >> copy_msg.txt
25: echo **************************************************************** >> copy_msg.txt
26: exit
完成!! 若執行過一次,可以去看copy_msg.txt內容大概長這樣:
start copy ARCHIVELOG at 2009/09/09 星期三 23:59:00.30
folder name = 2009_09_09
start copying...
X:\<source_path>\2009_09_09\O1_MF_1_3689_5BF3H8FR_.ARC
X:\<source_path>\2009_09_09\O1_MF_1_3690_5BF3NLXR_.ARC
X:\<source_path>\2009_09_09\O1_MF_1_3691_5BFQT2CF_.ARC
複製 3 個檔案
task end at 2009/09/09 星期三 23:59:09.61
****************************************************************
這樣就可以達到每天自動複製不同資料夾內的檔案之工程了~
Post a Comment