温馨提示×

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

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

Tomcat 在 CentOS 上的备份策略

一 备份范围与策略设计

  • 备份范围建议覆盖:应用与数据目录(如 webappsworktemp)、配置目录(如 conf)、日志目录(如 logs),以及外部持久化数据(如数据库、文件存储)。
  • 备份方式:使用 tar.gz 全量打包,结合 Systemd 管理 Tomcat 服务,必要时在备份窗口内短暂停机以保证一致性。
  • 保留策略:本地保留 7–30 天;关键备份可同步到远端(如 FTP/SFTP)或对象存储,形成 3-2-1 策略雏形(3 份副本、2 种介质、1 份异地)。
  • 日志策略:对 catalina.out 按天轮转备份并截断,历史日志压缩归档,保留 7–30 天;其余日志交由 logrotate 管理。
  • 运行时段:选择业务低峰(如 02:00–04:00)执行,降低对线上影响。

二 全量与增量备份脚本

  • 全量备份脚本(示例路径可按需调整)
#!/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"
  • 增量思路(基于 rsync)
    • 首次执行全量备份到 /opt/backup/tomcat/base/
    • 后续每天执行:
      • rsync 增量到 /opt/backup/tomcat/incr/YYYY-MM-DD/
      • 每周合并一次增量到全量(rsync 的 –link-dest 可做“硬链接快照”,节省空间)。
  • 使用说明:将脚本保存为 /usr/local/bin/tomcat_backup.sh,赋权 chmod +x,通过 cron 定时执行(见第四节)。

三 日志轮转与清理

  • 按天备份并截断 catalina.out(避免单文件过大)
#!/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
  • 使用 logrotate 管理其他日志(/etc/logrotate.d/tomcat)
/opt/tomcat/logs/*.log {
    daily
    missingok
    rotate 7
    compress
    notifempty
    create 640 tomcat tomcat
    copytruncate
}
  • 说明:copytruncate 适用于无法用信号重新打开日志的场景;若 Tomcat 支持日志框架按天切分,可关闭 copytruncate 并配合 log4j/logback 配置。

四 定时任务与远端备份

  • 定时执行全量备份(示例:每日 02:30
# 编辑 root 的 crontab
crontab -e

# 每天 02:30 执行全量备份
30 2 * * * /usr/local/bin/tomcat_backup.sh >> /var/log/tomcat_backup.log 2>&1
  • 远端备份到 FTP(示例脚本)
#!/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"
  • 安全建议:优先使用 SFTP/RSYNC over SSH 或对象存储 SDK;FTP 明文传输需在内网或启用 TLS。

五 恢复流程与验证

  • 全量恢复步骤
    1. 停止服务:systemctl stop tomcat
    2. 备份当前目录(可选):mv /opt/tomcat /opt/tomcat.bak_$(date +%F)
    3. 解压恢复:tar xzvf /opt/backup/tomcat/tomcat_full_YYYY-MM-DD_HHMMSS.tar.gz -C /
    4. 启动服务:systemctl start tomcat
    5. 验证:访问应用健康检查接口、查看 catalina.out 与业务日志是否正常
  • 日志恢复:将按天备份的 catalina.out.YYYY-MM-DD.log 按需拷回 logs/ 目录查看。

0