Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Windows 綜合教學 >> 關於 Windows

Windows 批次檔實現 MySQL 資料庫與專案定時備份 (含 7 天滾動清理)

編輯:關於 Windows

適用於 MySQL + Tomcat (Java Web) 架構的全自動備份腳本,單一 .bat 完成:資料庫匯出、停止 Tomcat、打包專案目錄、啟動 Tomcat、本地/遠端 7 天滾動刪除舊備份。可直接丟入 Windows 工作排程器執行。

備份腳本完整內容 (backup.bat)

@echo off
rem ===== 參數 =====
set BAK_ROOT=E:\bak
set MYSQL_BIN=C:\Program Files\MySQL\MySQL Server 5.0\bin
set TOMCAT_HOME=D:\tomcat5
set KEEP_DAYS=7

rem ===== 1. 備份資料庫 =====
echo [%date% %time%] 開始備份資料庫 >> %BAK_ROOT%\backup.log
del %BAK_ROOT%\xx%date:~0,4%%date:~5,2%%date:~8,2%.sql 2>nul
%MYSQL_BIN%\mysqldump -uroot -proot -c --extended-insert --default-character-set=GB2312 -B xx ^> %BAK_ROOT%\xx%date:~0,4%%date:~5,2%%date:~8,2%.sql
echo [%date% %time%] 資料庫備份完成 >> %BAK_ROOT%\backup.log

rem ===== 2. 備份專案 (需停止 Tomcat) =====
echo [%date% %time%] 開始備份專案 >> %BAK_ROOT%\backup.log
net stop tomcat >> %BAK_ROOT%\backup.log
del %BAK_ROOT%\xx_program%date:~0,4%%date:~5,2%%date:~8,2%.rar 2>nul
"C:\Program Files\WinRAR\WinRAR.exe" a -r %BAK_ROOT%\dxoa_program%date:~0,4%%date:~5,2%%date:~8,2%.rar %TOMCAT_HOME%\webapps\xx\ >> %BAK_ROOT%\backup.log
copy jchatbox.ser %TOMCAT_HOME%\webapps\jchat\WEB-INF\conf\jchatbox.ser /y >> %BAK_ROOT%\backup.log
net start tomcat >> %BAK_ROOT%\backup.log
echo [%date% %time%] 專案備份完成 >> %BAK_ROOT%\backup.log

rem ===== 3. 計算 7 天前日期 (VBS 輔助) =====
echo wscript.echo dateadd("d",-%KEEP_DAYS%,date) > %tmp%\tmp.vbs
for /f "tokens=1-3 delims=/- " %%i in ('cscript //nologo %tmp%\tmp.vbs') do (
    set Y=%%i & set M=%%j & set D=%%k
)
if %M% LSS 10 set M=0%M%
if %D% LSS 10 set D=0%D%
set OLD_DATE=%Y%%M%%D%

rem ===== 4. 刪除本地 7 天前備份 =====
del %BAK_ROOT%\xx%OLD_DATE%.sql >> %BAK_ROOT%\backup.log
del %BAK_ROOT%\xx_program%OLD_DATE%.rar >> %BAK_ROOT%\backup.log

關鍵點說明

  • 日期切片:%date:~0,4% 取年、%date:~5,2% 取月、%date:~8,2% 取日,需確認系統日期格式為 YYYY-MM-DD(可用 echo %date% 驗證)。
  • VBS 日期運算:利用 dateadd("d",-7,date) 取得 7 天前日期,解決批次檔無原生日運算功能的限制。
  • MySQL 參數:-c 完整 INSERT、--extended-insert 多行合併、--default-character-set=GB2312 避免中文亂碼。
  • Tomcat 停啟:net stop/start tomcat 需服務名稱確為 tomcat(可用 sc query 確認)。

部署建議

  1. 將腳本儲存為 E:\backup\backup.bat。
  2. 建立排程工作,每日零晨執行,若伺服器有登入密碼請在排程「一般」頁籤填入帳號密碼。
  3. 首次執行觀察 backup.log 確認無誤後即可投入生產。
Copyright © Windows教程網 All Rights Reserved