利用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.txt21: 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