温馨提示×

Tomcat在CentOS上的备份与恢复

小樊
39
2026-01-02 04:29:32
栏目: 智能运维

Tomcat在CentOS上的备份与恢复

一 备份策略与范围

  • 建议备份的核心范围:
    • 应用与发布目录:/opt/tomcat/webapps(或 /var/lib/tomcat/webapps
    • 配置目录:/opt/tomcat/conf(或 /etc/tomcat
    • 工作与临时目录:/opt/tomcat/work/opt/tomcat/temp
    • 日志目录:/opt/tomcat/logs(或 /var/log/tomcat
    • 运行标识:/opt/tomcat/temp/tomcat.pid(如使用 PID 文件)
  • 备份方式选择:
    • 本地打包归档:使用 tar 对关键目录做时间点快照,便于快速回滚
    • 远程同步:使用 rsync 将备份同步到远程存储,提升容灾能力
    • 服务一致性:备份前用 systemctl 停止 Tomcat,避免运行中文件变更导致不一致

二 本地备份与恢复步骤

  • 备份(示例以安装目录为 /opt/tomcat,备份到 /opt/backup
    1. 停止服务 sudo systemctl stop tomcat
    2. 创建备份目录 sudo mkdir -p /opt/backup
    3. 打包关键目录(排除备份目录自身与虚拟文件系统) sudo tar -czvf /opt/backup/tomcat_backup_$(date +%F_%H%M%S).tar.gz
      –exclude=/opt/backup
      –exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run
      /opt/tomcat/webapps /opt/tomcat/conf /opt/tomcat/logs
      /opt/tomcat/work /opt/tomcat/temp
    4. 可选:备份 systemd 服务文件 sudo cp /etc/systemd/system/tomcat.service /opt/backup/tomcat.service.bak_$(date +%F)
    5. 启动服务 sudo systemctl start tomcat
  • 恢复(到原路径或其他目录)
    1. 建议先停止服务 sudo systemctl stop tomcat
    2. 清空或重命名目标目录(谨慎操作,确保有备份) sudo mv /opt/tomcat /opt/tomcat.bak_$(date +%F)
    3. 解压恢复 sudo mkdir -p /opt/tomcat sudo tar -xzvf /opt/backup/tomcat_backup_YYYYMMDD_HHMMSS.tar.gz -C /opt/tomcat
    4. 如部署了 systemd 服务,恢复服务文件并生效 sudo cp /opt/backup/tomcat.service.bak_YYYY-MM-DD /etc/systemd/system/tomcat.service sudo systemctl daemon-reload
    5. 启动并校验 sudo systemctl start tomcat sudo systemctl status tomcat curl -I http://localhost:8080

三 远程备份与自动化

  • rsync 远程备份(推送到备份服务器)
    • 备份 rsync -avz --delete /opt/tomcat/ user@backup_server:/data/backup/tomcat/
    • 恢复 rsync -avz --delete user@backup_server:/data/backup/tomcat/ /opt/tomcat/
  • 自动化脚本示例(本地+远程,按日保留)
    • 保存为:/usr/local/bin/tomcat_backup.sh #!/bin/bash set -e DATE=$(date +%F_%H%M%S) BACKUP_BASE=“/opt/backup” SRC_BASE=“/opt/tomcat” REMOTE_USER=“backup” REMOTE_HOST=“backup.example.com” REMOTE_DIR=“/data/backup/tomcat” RETENTION_DAYS=7

      mkdir -p “$BACKUP_BASE”

      本地打包

      tar czvf “$BACKUP_BASE/tomcat_$DATE.tar.gz”
      –exclude=“$BACKUP_BASE”
      –exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run
      “$SRC_BASE/webapps” “$SRC_BASE/conf” “$SRC_BASE/logs”
      “$SRC_BASE/work” “$SRC_BASE/temp”

      可选:备份 systemd 服务文件

      if [ -f /etc/systemd/system/tomcat.service ]; then cp /etc/systemd/system/tomcat.service “$BACKUP_BASE/tomcat.service.bak_$DATE” fi

      远程同步

      rsync -avz --delete “$BACKUP_BASE/tomcat_$DATE.tar.gz”
      “$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/”

      清理本地旧备份

      find “$BACKUP_BASE” -name “tomcat_.tar.gz" -mtime +$RETENTION_DAYS -delete find “$BACKUP_BASE” -name "tomcat.service.bak_” -mtime +$RETENTION_DAYS -delete

    • 赋权与定时(每天 02:00 执行) chmod +x /usr/local/bin/tomcat_backup.sh echo “0 2 * * * root /usr/local/bin/tomcat_backup.sh >> /var/log/tomcat_backup.log 2>&1”
      | sudo tee /etc/cron.d/tomcat_backup

四 恢复验证与常见问题

  • 恢复后验证清单
    • 服务状态:sudo systemctl status tomcat(应为 active (running)
    • 进程与端口:ps -ef | grep tomcat;ss -lntp | grep 8080
    • 访问测试:curl -I http://localhost:8080 或应用健康检查接口
    • 日志检查:tail -n50 /opt/tomcat/logs/catalina.out
  • 常见问题与处理
    • 端口未放行导致访问不了:firewall-cmd --zone=public --add-port=8080/tcp --permanent && firewall-cmd --reload
    • 恢复后应用未生效:确认应用已解压到 webapps,必要时清理 work/Catalina 并重启
    • 权限问题:确保 Tomcat 运行用户对解压后的目录具备读写执行权限(常见为 tomcat:tomcat
    • 备份一致性:对包含正在写入日志/缓存的目录,优先在停机窗口备份,减少脏数据风险

0