針對 Java Web 專案(Tomcat 部署)設計的全自動備份腳本,涵蓋:停止服務、打包專案目錄、保留 7 天滾動備份、FTP 上傳遠端伺服器、清理臨時檔、重啟服務。可配合 Windows 排程工作實現無人值守備份。
@echo off
rem ===== 參數區 =====
set BACKUP_ROOT=D:\backup
set TOMCAT_HOME=D:\tomcat-6.0.20
set FTP_HOST=59.208.8.4
set FTP_USER=ycoa
set FTP_PASS=bester@2010
set FTP_REMOTE_DIR=server5
set KEEP_DAYS=7
rem ===== 1. 停止 Tomcat =====
echo [%date% %time%] 開始備份 >> %BACKUP_ROOT%\backup.log
call %BACKUP_ROOT%\bat\tomcat6\shutdown.bat >> %BACKUP_ROOT%\backup.log
rem ===== 2. 打包專案 (排除舊檔) =====
set FILENAME=portal_cas_%date:~0,4%%date:~5,2%%date:~8,2%.rar
if exist %BACKUP_ROOT%\bak\%FILENAME% del %BACKUP_ROOT%\bak\%FILENAME%
"C:\Program Files\WinRAR\WinRAR.exe" a %BACKUP_ROOT%\bak\%FILENAME% %TOMCAT_HOME%\webapps >> %BACKUP_ROOT%\backup.log
rem ===== 3. 計算 7 天前日期 (用於刪除本地/遠端舊檔) =====
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. 刪除本地舊備份 =====
del %BACKUP_ROOT%\bak\portal_cas_%OLD_DATE%.rar >> %BACKUP_ROOT%\backup.log
rem ===== 5. 動態產生 FTP 腳本並上傳 =====
(
echo open %FTP_HOST%
echo user %FTP_USER% %FTP_PASS%
echo cd %FTP_REMOTE_DIR%
echo bin
echo prompt off
echo put %BACKUP_ROOT%\bak\%FILENAME%
echo delete portal_cas_%OLD_DATE%.rar
echo bye
) > %BACKUP_ROOT%\ftp.tmp
ftp -n -s:%BACKUP_ROOT%\ftp.tmp >> %BACKUP_ROOT%\backup.log
del %BACKUP_ROOT%\ftp.tmp
rem ===== 6. 重啟 Tomcat =====
call %BACKUP_ROOT%\bat\tomcat6\startup.bat >> %BACKUP_ROOT%\backup.log
echo [%date% %time%] 備份完成 >> %BACKUP_ROOT%\backup.log
backup.bat 放置於 D:\backup\bat\。backup.bat,若系統有登入密碼請填入。backup.log 與遠端 FTP 目錄確認成功。注意:若備份期間 Tomcat 進程未正常結束導致檔案鎖定,可先建立「重啟伺服器」排程於備份前執行,確保檔案釋放。