centos

Tomcat在CentOS上如何配置备份策略

小樊
44
2025-12-11 14:35:34
栏目: 智能运维

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"

五 恢复流程与验证

0
看了该问题的人还看了