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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章