@echo off
rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem ┣----------------------提示:-----------------------------------┫
rem ┣--該批處理為數(shù)據(jù)庫備份操作文件.-------------------------------┫
rem ┣--由于sqlserver自帶備份策略,無需使用批處理.-------------------┫
rem ┣--所以對應(yīng)數(shù)據(jù)庫類型僅包涵oracle,mysql兩種.-------------------┫
rem ┣--存放目錄格式如d:\backup\crmnew------------------------------┫
rem ┣--盤符下一級為總目錄的文件夾名 例如backup---------------------┫
rem ┣--二級為使用該數(shù)據(jù)庫的項(xiàng)目名稱 例如crmnew---------------------┫
rem ┣--執(zhí)行環(huán)境為windows server 2003-------------------------------┫
rem ┣--編寫者:CWCA-研發(fā)部-劉洋-2011-7-25---------------------------┫
rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem ----------------------初始設(shè)置項(xiàng)----------------------------
rem 設(shè)置項(xiàng)目庫備份文件存放根目錄-腳本自動(dòng)創(chuàng)建
set bak_dir=d:\databak
rem 設(shè)置項(xiàng)目名稱
set project_name=cwcanew
rem 選擇備份數(shù)據(jù)所使用的壓縮軟件
set compressFile=c:\uncompress\WinRAR\Rar.exe
rem 設(shè)置數(shù)據(jù)庫的類型,僅支持oracle和mysql
set db_type=oracle
rem 設(shè)置登陸目的數(shù)據(jù)庫的標(biāo)識,oracle為sid,mysql為庫名
set db_name=oracle
rem 設(shè)置登陸目的數(shù)據(jù)庫的用戶名
set db_user=****
rem 設(shè)置登陸目的數(shù)據(jù)庫的用戶密碼
set db_pwd=****
rem 設(shè)置備份周期,1為按天備份,7為按周備份
set bak_cycle=1
rem 設(shè)置每個(gè)備份文件的保留天數(shù),為0則表示不刪除歷史文件
set keep_days=0
rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem ----------------------可選設(shè)置項(xiàng)----------------------------
rem 獲取當(dāng)天為星期幾
set pweek=%date:~-1%
rem 設(shè)置單個(gè)備份文件名-此處按"項(xiàng)目名稱_日期"命名-例:crmnew_20110101 -建議不要更改
set filename=%project_name%_%Date:~0,4%年%Date:~5,2%月%Date:~8,2%日
rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem ----------------------------------------執(zhí)行代碼區(qū)域----------------------------------------
if not exist %bak_dir%\%project_name% mkdir %bak_dir%\%project_name%
set bakfile=%bak_dir%\%project_name%\%filename%
set filesuffix=
if %db_type% equ oracle set filesuffix=dmp
if %db_type% equ mysql set filesuffix=sql
if %bak_cycle% equ 7 (
if %pweek% equ 日 goto backup
goto end
)
if %bak_cycle% equ 1 goto backup
goto end
:backup
if %db_type% equ oracle goto backup_oracle
if %db_type% equ mysql goto backup_mysql
goto end
:backup_oracle
exp %db_user%/%db_pwd%@%db_name% file=%bakfile%.%filesuffix%
goto compress
:backup_mysql
mysqldump -u%db_user% -p%db_pwd% %db_name% > %bakfile%.%filesuffix%
goto compress
:compress
%compressFile% a %bakfile%.rar %bakfile%.%filesuffix%
goto delete_source
:delete_source
del %bakfile%.%filesuffix%
goto delete_history
:delete_history
if %keep_days% neq 0 forfiles /p %bak_dir%\%project_name%\ /d -%keep_days% /c "cmd /c echo deleting @file ... && del /f @path"
goto end
:end
set bak_dir=
set project_name=
set compressFile=
set db_type=
set db_name=
set db_user=
set db_pwd=
set bak_cycle=
set keep_days=
set pweek=
set filename=
set bakfile=
set filesuffix=
rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
pause