Tomcat 在 CentOS 上的备份策略
一 备份范围与策略设计
二 全量与增量备份脚本
#!/bin/bash
# 配置区
CATALINA_HOME="/opt/tomcat"
BACKUP_ROOT="/opt/backup/tomcat"
DATE_TAG=$(date +%F_%H%M%S)
RETENTION_DAYS=14
# 创建备份目录
mkdir -p "$BACKUP_ROOT"
# 可选:短暂停机保证一致性(如无应用写入可注释)
# systemctl stop tomcat
# 打包关键目录(排除备份目录自身与虚拟文件系统)
tar czvf "$BACKUP_ROOT/tomcat_full_${DATE_TAG}.tar.gz" \
--exclude="$BACKUP_ROOT" \
--exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run \
"$CATALINA_HOME/webapps" \
"$CATALINA_HOME/conf" \
"$CATALINA_HOME/logs" \
"$CATALINA_HOME/work" \
"$CATALINA_HOME/temp"
# 可选:恢复服务
# systemctl start tomcat
# 清理过期备份
find "$BACKUP_ROOT" -name "tomcat_full_*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "Full backup completed: $BACKUP_ROOT/tomcat_full_${DATE_TAG}.tar.gz"
三 日志轮转与清理
#!/bin/bash
LOG_DIR="/opt/tomcat/logs"
YESTERDAY=$(date -d '1 day ago' +%F)
cd "$LOG_DIR" || exit 1
# 备份并清空 catalina.out
cp catalina.out "catalina.out.${YESTERDAY}.log"
: > catalina.out
# 删除 30 天前的日志
find "$LOG_DIR" -name "catalina.out.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "catalina.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "localhost_access_log.*.txt" -mtime +30 -delete
find "$LOG_DIR" -name "localhost.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "host-manager.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "manager.*.log" -mtime +30 -delete
/opt/tomcat/logs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 tomcat tomcat
copytruncate
}
四 定时任务与远端备份
# 编辑 root 的 crontab
crontab -e
# 每天 02:30 执行全量备份
30 2 * * * /usr/local/bin/tomcat_backup.sh >> /var/log/tomcat_backup.log 2>&1
#!/bin/bash
BACKUP_FILE="/opt/backup/tomcat/tomcat_full_$(date +%F_%H%M%S).tar.gz"
FTP_HOST="192.168.10.20"
FTP_USER="backup"
FTP_PASS="YourPass"
ftp -v -n << EOF
open $FTP_HOST
user $FTP_USER $FTP_PASS
binary
cd /backup/tomcat
put $BACKUP_FILE
quit
EOF
# 可选:上传成功后删除本地副本(谨慎)
# rm -f "$BACKUP_FILE"
五 恢复流程与验证