mysql定期備份數據並壓縮上傳到ftp服務器的bat文件腳本,恢復建議使用SQLyog enterprise
@ECHO OFF
REM 請在計算機的控制面版中,將該腳本添加爲計劃任務,用於進行定期備份
REM 請d:\mysqldump.exe文件存在。備份機器無需安裝Mysql,mysqldump.exe可在mysql的windows包中bin目錄下找到,拷貝到備份機器。
REM 數據庫配置
SET "Subject=shangxueyuan"
SET "userName=cbc-as"
SET "password=***"
SET "db1=cbc-as"
REM SET "db2=hfd2"
SET "IP=***"
REM 是否壓縮備份文件(true/false)
SET "rar=false"
REM 壓縮文件路徑(winrar/7z)
SET "rarURL=winrar"
REM 備份文件上傳FTP設置
SET "ftpUpload=false"
SET "ftpIP=***"
SET "ftpUser=singvi"
SET "ftpPW=sin263"
REM WIN7需要配置備份文件目錄,否則保存在與任務計劃程序taskeng相同的目錄
REM "DISK=F:" "DIR=DbBackup"
SET "DISK="
SET "DIR="
REM 配置結束
COLOR 27
SET d=%date%
REM 年份月份目錄生成
REM 取日期,支持輸入格式:YYYY-MM-DD HH:mm:ss 和 YYYY/MM/DD HH:mm:ss
for /f "tokens=1 delims=\/- " %%j in ("%d%") do set d1=%%j
for /f "tokens=2 delims=\/- " %%j in ("%d%") do set d2=%%j
for /f "tokens=3 delims=\/- " %%j in ("%d%") do set d3=%%j
for /f "tokens=4 delims=\/- " %%j in ("%d%") do set d4=%%j
for /f "tokens=1 delims=: " %%j in ("%time%") do set t1=%%j
for /f "tokens=2 delims=: " %%j in ("%time%") do set t2=%%j
for /f "tokens=3 delims=:. " %%j in ("%time%") do set t3=%%j
REM 星期在日期前的情況
IF "%d1%"=="%d1:~0,3%" (
SET year=%d2%
SET /a tmpx=100+d3
SET /a tmpy=100+d4
) ELSE (
SET year=%d1%
SET /a tmpx=100+d2
SET /a tmpy=100+d3
)
REM 截取放在IF內時,不能正常截取
SET month=%tmpx:~1,2%
SET day=%tmpy:~1,2%
SET /a t1=100+t1
SET /a t2=100+t2
SET /a t3=100+t3
SET hour=%t1:~1,2%
SET minute=%t2:~1,2%
SET second=%t3:~1,2%
SET PATH_YEAR_MONTH=%year%/%month%/
SET fname=%year%-%month%-%day%_%hour%%minute%%second%
%DISK%
CD %DIR%
IF EXIST %year% (
REM ECHO 文件夾[%year%]已經存在
CD %year%
) ELSE (
REM ECHO 創建文件夾[%year%]
MD %year%
CD %year%
)
IF EXIST %month% (
REM ECHO 文件夾[%month%]已經存在
CD..
) ELSE (
REM ECHO 創建文件夾[%month%]
MD %month%
CD..
)
REM 目錄生成結束
ECHO %Subject%需求管理系統 數據庫自動備份
ECHO -------------------------------
ECHO 正在執行備份任務,請稍候...
REM 以下使用mysqldump進行備份,如果mysql安裝目錄未添加到系統路徑,請在其前面指定安裝目錄,如: d:\mysql\bin\mysqldump
ECHO ***************************************************************************************************>>log.txt
ECHO %Subject%需求管理系統 數據庫自動備份>>log.txt
ECHO ------------------------------->>log.txt
ECHO %date% %time% 正在進行備份...>>log.txt
ECHO %PATH_YEAR_MONTH%%db1%%fname%.sql
mysqldump -u%userName% -p%password% -h%IP% %db1% > %PATH_YEAR_MONTH%%db1%%fname%.sql
REM ECHO %PATH_YEAR_MONTH%%db2%%fname%.sql
REM mysqldump -u%userName% -p%password% -h%IP% --database %db2%> %PATH_YEAR_MONTH%%db2%%fname%.sql
ECHO 備份完畢 [%date% %time%]>>log.txt
IF "%rar%"=="true" (
ECHO %date% %time% 正在壓縮備份文件...>>log.txt
%rarURL% u %PATH_YEAR_MONTH%%db1%%fname%.rar %PATH_YEAR_MONTH%%db1%%fname%.sql
REM %rarURL% u %PATH_YEAR_MONTH%%db2%%fname%.rar %PATH_YEAR_MONTH%%db2%%fname%.sql
ECHO 壓縮完畢 [%date% %time%]>>log.txt
REM 壓縮後刪除原文件
CD %PATH_YEAR_MONTH%
DEL %db1%%fname%.sql
REM DEL %db2%%fname%.sql
CD..
CD..
)
SET FtpFile="TempAcc.txt"
IF "%ftpUpload%"=="true" (
>"%FtpFile%" ECHO %ftpUser%
>>"%FtpFile%" ECHO %ftpPW%
>>"%FtpFile%" ECHO bin
>>"%FtpFile%" ECHO MKDIR %year%
>>"%FtpFile%" ECHO CD %year%
>>"%FtpFile%" ECHO MKDIR %month%
>>"%FtpFile%" ECHO CD %month%
goto checkRAR
) else (
goto endFTP
)
:checkRAR
IF "%rar%"=="true" (
>>"%FtpFile%" ECHO SEND %PATH_YEAR_MONTH%%db1%%fname%.rar
>>"%FtpFile%" ECHO !ECHO %PATH_YEAR_MONTH%%db1%%fname%.rar 已上傳^>^>uploadLog.txt
>>"%FtpFile%" REM ECHO send %PATH_YEAR_MONTH%%db2%%fname%.rar
>>"%FtpFile%" REM ECHO !ECHO %PATH_YEAR_MONTH%%db2%%fname%.rar 已上傳^>^>uploadLog.txt
) else (
>>"%FtpFile%" ECHO send %PATH_YEAR_MONTH%%db1%%fname%.sql
>>"%FtpFile%" ECHO !ECHO %PATH_YEAR_MONTH%%db1%%fname%.sql 已上傳^>^>uploadLog.txt
>>"%FtpFile%" REM ECHO send %PATH_YEAR_MONTH%%db2%%fname%.sql
>>"%FtpFile%" REM ECHO !ECHO %PATH_YEAR_MONTH%%db2%%fname%.sql 已上傳^>^>uploadLog.txt
)
>>"%FtpFile%" ECHO bye
ECHO 正在上傳文件...
ECHO %date% %time% 正在上傳備份文件...>>log.txt
REM start /wait ftp -v -i -s:"%FtpFile%" %ftpIP%
FTP -s:"%FtpFile%" %ftpIP%
DEL /q "%FtpFile%"
ECHO 上傳成功 [%date%%time%]>>log.txt
ECHO 文件已上傳
:endFTP
ECHO 操作已完成![%date% %time%]>>log.txt
Echo. >>log.txt
Echo. >>log.txt
ECHO 執行完成!
REM PAUSE
REM 請在計算機的控制面版中,將該腳本添加爲計劃任務,用於進行定期備份
REM 請d:\mysqldump.exe文件存在。備份機器無需安裝Mysql,mysqldump.exe可在mysql的windows包中bin目錄下找到,拷貝到備份機器。
REM 數據庫配置
SET "Subject=shangxueyuan"
SET "userName=cbc-as"
SET "password=***"
SET "db1=cbc-as"
REM SET "db2=hfd2"
SET "IP=***"
REM 是否壓縮備份文件(true/false)
SET "rar=false"
REM 壓縮文件路徑(winrar/7z)
SET "rarURL=winrar"
REM 備份文件上傳FTP設置
SET "ftpUpload=false"
SET "ftpIP=***"
SET "ftpUser=singvi"
SET "ftpPW=sin263"
REM WIN7需要配置備份文件目錄,否則保存在與任務計劃程序taskeng相同的目錄
REM "DISK=F:" "DIR=DbBackup"
SET "DISK="
SET "DIR="
REM 配置結束
COLOR 27
SET d=%date%
REM 年份月份目錄生成
REM 取日期,支持輸入格式:YYYY-MM-DD HH:mm:ss 和 YYYY/MM/DD HH:mm:ss
for /f "tokens=1 delims=\/- " %%j in ("%d%") do set d1=%%j
for /f "tokens=2 delims=\/- " %%j in ("%d%") do set d2=%%j
for /f "tokens=3 delims=\/- " %%j in ("%d%") do set d3=%%j
for /f "tokens=4 delims=\/- " %%j in ("%d%") do set d4=%%j
for /f "tokens=1 delims=: " %%j in ("%time%") do set t1=%%j
for /f "tokens=2 delims=: " %%j in ("%time%") do set t2=%%j
for /f "tokens=3 delims=:. " %%j in ("%time%") do set t3=%%j
REM 星期在日期前的情況
IF "%d1%"=="%d1:~0,3%" (
SET year=%d2%
SET /a tmpx=100+d3
SET /a tmpy=100+d4
) ELSE (
SET year=%d1%
SET /a tmpx=100+d2
SET /a tmpy=100+d3
)
REM 截取放在IF內時,不能正常截取
SET month=%tmpx:~1,2%
SET day=%tmpy:~1,2%
SET /a t1=100+t1
SET /a t2=100+t2
SET /a t3=100+t3
SET hour=%t1:~1,2%
SET minute=%t2:~1,2%
SET second=%t3:~1,2%
SET PATH_YEAR_MONTH=%year%/%month%/
SET fname=%year%-%month%-%day%_%hour%%minute%%second%
%DISK%
CD %DIR%
IF EXIST %year% (
REM ECHO 文件夾[%year%]已經存在
CD %year%
) ELSE (
REM ECHO 創建文件夾[%year%]
MD %year%
CD %year%
)
IF EXIST %month% (
REM ECHO 文件夾[%month%]已經存在
CD..
) ELSE (
REM ECHO 創建文件夾[%month%]
MD %month%
CD..
)
REM 目錄生成結束
ECHO %Subject%需求管理系統 數據庫自動備份
ECHO -------------------------------
ECHO 正在執行備份任務,請稍候...
REM 以下使用mysqldump進行備份,如果mysql安裝目錄未添加到系統路徑,請在其前面指定安裝目錄,如: d:\mysql\bin\mysqldump
ECHO ***************************************************************************************************>>log.txt
ECHO %Subject%需求管理系統 數據庫自動備份>>log.txt
ECHO ------------------------------->>log.txt
ECHO %date% %time% 正在進行備份...>>log.txt
ECHO %PATH_YEAR_MONTH%%db1%%fname%.sql
mysqldump -u%userName% -p%password% -h%IP% %db1% > %PATH_YEAR_MONTH%%db1%%fname%.sql
REM ECHO %PATH_YEAR_MONTH%%db2%%fname%.sql
REM mysqldump -u%userName% -p%password% -h%IP% --database %db2%> %PATH_YEAR_MONTH%%db2%%fname%.sql
ECHO 備份完畢 [%date% %time%]>>log.txt
IF "%rar%"=="true" (
ECHO %date% %time% 正在壓縮備份文件...>>log.txt
%rarURL% u %PATH_YEAR_MONTH%%db1%%fname%.rar %PATH_YEAR_MONTH%%db1%%fname%.sql
REM %rarURL% u %PATH_YEAR_MONTH%%db2%%fname%.rar %PATH_YEAR_MONTH%%db2%%fname%.sql
ECHO 壓縮完畢 [%date% %time%]>>log.txt
REM 壓縮後刪除原文件
CD %PATH_YEAR_MONTH%
DEL %db1%%fname%.sql
REM DEL %db2%%fname%.sql
CD..
CD..
)
SET FtpFile="TempAcc.txt"
IF "%ftpUpload%"=="true" (
>"%FtpFile%" ECHO %ftpUser%
>>"%FtpFile%" ECHO %ftpPW%
>>"%FtpFile%" ECHO bin
>>"%FtpFile%" ECHO MKDIR %year%
>>"%FtpFile%" ECHO CD %year%
>>"%FtpFile%" ECHO MKDIR %month%
>>"%FtpFile%" ECHO CD %month%
goto checkRAR
) else (
goto endFTP
)
:checkRAR
IF "%rar%"=="true" (
>>"%FtpFile%" ECHO SEND %PATH_YEAR_MONTH%%db1%%fname%.rar
>>"%FtpFile%" ECHO !ECHO %PATH_YEAR_MONTH%%db1%%fname%.rar 已上傳^>^>uploadLog.txt
>>"%FtpFile%" REM ECHO send %PATH_YEAR_MONTH%%db2%%fname%.rar
>>"%FtpFile%" REM ECHO !ECHO %PATH_YEAR_MONTH%%db2%%fname%.rar 已上傳^>^>uploadLog.txt
) else (
>>"%FtpFile%" ECHO send %PATH_YEAR_MONTH%%db1%%fname%.sql
>>"%FtpFile%" ECHO !ECHO %PATH_YEAR_MONTH%%db1%%fname%.sql 已上傳^>^>uploadLog.txt
>>"%FtpFile%" REM ECHO send %PATH_YEAR_MONTH%%db2%%fname%.sql
>>"%FtpFile%" REM ECHO !ECHO %PATH_YEAR_MONTH%%db2%%fname%.sql 已上傳^>^>uploadLog.txt
)
>>"%FtpFile%" ECHO bye
ECHO 正在上傳文件...
ECHO %date% %time% 正在上傳備份文件...>>log.txt
REM start /wait ftp -v -i -s:"%FtpFile%" %ftpIP%
FTP -s:"%FtpFile%" %ftpIP%
DEL /q "%FtpFile%"
ECHO 上傳成功 [%date%%time%]>>log.txt
ECHO 文件已上傳
:endFTP
ECHO 操作已完成![%date% %time%]>>log.txt
Echo. >>log.txt
Echo. >>log.txt
ECHO 執行完成!
REM PAUSE
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.