在Linux下能夠經過crontab來設置定時執行數據庫的備份腳本,一樣Windows下能夠經過設定任務計劃程序來設定要執行的自動備份腳本。具體的設定過程再也不詳述,下面分別爲Oracle和MySQL的備份腳本:mysql
1.Windows 下Oracle的備份腳本:
@echo off
echo
數據庫開始進行備份...
cd e:\ORACLE\BIN
set filename=%e:\backup_bat\local%date:~0,10%
exp giftsdev/giftsdev@local file=%filename%.dmp log=%filename%.log owner=giftsdev compress=y grants=y indexes=y constraints=y
jar cvf %filename%.jar %filename%.*
del %filename%.dmp
del %filename%.log
copy %filename%.jar e:\exp_data\local%date:~0,10%.jar
del %filename%.jar
echo
數據庫備份完成
echo.& pause
2.Windows 下MySQL的備份腳本
echo
數據庫開始備份...
set dirname=bak%date:~0,4%%date:~5,2%
set filename=tdoa-%nowdate%.rar
mysqldump -uroot -pmyoa888 td_oa > td_oa.sql
::E:\MYOA\mysql\bin\mysqldump.exe -uroot -pmyoa888 td_oa > td_oa.sql
rar a %filename% td_oa.sql
::%windir%\System32\WinRAR.exe a %filename% td_oa.sql
move %filename% F:\OA_BACKUP\%dirname%
del td_oa.sql
echo
數據庫備份完成!
echo.& pause
備份過程當中遇到的問題:
(1) 建立文件夾失敗。在windows 2008
下,默認的日期格式爲相似 2010/12/27
的樣式,在根據日期建立文件夾或者文件時因爲windows
不容許有「/
」特殊字符的存在,故報建立錯誤。這裏使用「set nowdate=%date:~0,4%%date:~5,2%%date:~8,2%
」分別取得年、月、日拼湊的形式變相實現。
(2) 環境變量問題。在寫完上述腳本後,雙擊bat
文件能夠無誤順利的執行,可是扔到計劃任務執行時就老是報錯,具體爲rar
和mysqldump
命令不存在。我懷疑是環境變量的設置沒有生效,因爲在服務器上不能輕易的執行服務器的重啓,這裏用rar
和mysqldump
的完整路徑來代替(代碼中的紅色字體)
附:常見dos命令
1.dos
下的複製和移動
c
盤下的a.txt
文件複製或移動到d
盤
命令爲:
複製copy c:\a.txt d:\a.txt
移動move c:\a.txt d:\a.txt
2.dos
下的條件判斷
if not exist F:\OA_BACKUP\%dirname% md F:\OA_BACKUP\%dirname%
(判斷目錄是否存在)
3.dos
下的目錄建立和刪除
MD——
創建子目錄
RD——
刪除子目錄
4.
關於%DATE:~4,10%
的格式
這個命令的意思就是在DATE
的輸出中,取4-10
中間的字符。
對於不一樣的機器,可能有不一樣的時間格式,這個能夠在控制面板裏設置。
能夠經過ECHO
命令察看當前設置,如:
C:>echo %DATE%
星期一 2002-10-28
固然,咱們能夠一樣取到星期的值:
C:>echo %DATE:~0,3%
星期一
固然也能夠從不一樣方向來:
C:>echo %DATE:~-10%
2002-10-28
C:>echo %DATE:~0,-10%
星期一
5. rar
命令解壓縮文件前要進行的操做:
1
〉將winRAR.exe
文件拷貝到system32
文件夾下;
2
〉將winRAR
的安裝路徑放到環境變量中
rar
打包文件:
rar a %filename%.rar %filename%.*
rar
解壓縮文件
rar e %filename%.rar
6.
用jar
打包解壓文件必須在當前系統中裝有jre
環境
jar
打包文件:
jar cvf %filename%.jar %filwname%.*
jar
解壓縮文件:
jar xvf %filename%.jar