温馨提示×

如何在Ubuntu上备份Tomcat数据

小樊
46
2025-11-25 08:39:53
栏目: 智能运维

Ubuntu 上备份 Tomcat 数据的实用方案

一 备份范围与准备

  • 明确需要保护的目录与数据:
    • 配置与部署:$CATALINA_BASE/conf$CATALINA_BASE/webapps(生产环境建议优先备份这两项)。
    • 运行时与工作目录:$CATALINA_BASE/work$CATALINA_BASE/temp(可选,便于完整回滚)。
    • 日志:$CATALINA_BASE/logs(可按需单独备份与长期保留)。
  • 确认目录位置:
    • 若通过包管理器安装,常见路径为:/var/lib/tomcat[版本]/webapps/var/lib/tomcat[版本]/conf/var/log/tomcat[版本]
    • 若手动安装,通常为:/opt/tomcat(此时 $CATALINA_BASE=/opt/tomcat)。
  • 准备备份存放区:例如 /backup/tomcat,并确保磁盘空间充足与权限正确。
  • 建议在执行全量备份前先停止 Tomcat,避免文件变更导致不一致(配置与程序包备份尤为建议):
    • 停止命令示例:sudo systemctl stop tomcat/opt/tomcat/bin/shutdown.sh

二 手动一次性备份与恢复

  • 备份命令示例(按实际路径调整):
    • 全量备份(配置 + 应用 + 可选日志/工作目录):
      sudo tar -czvf /backup/tomcat_full_$(date +%F).tar.gz \
        /var/lib/tomcat9/conf \
        /var/lib/tomcat9/webapps \
        /var/lib/tomcat9/work /var/lib/tomcat9/temp \
        /var/log/tomcat9
      
    • 仅备份配置与应用(最常见):
      sudo tar -czvf /backup/tomcat_app_conf_$(date +%F).tar.gz \
        /var/lib/tomcat9/conf /var/lib/tomcat9/webapps
      
    • 仅备份日志:
      sudo tar -czvf /backup/tomcat_logs_$(date +%F).tar.gz /var/log/tomcat9
      
  • 恢复步骤:
    • 先停止 Tomcat:sudo systemctl stop tomcat
    • 解压覆盖(示例为配置与应用):
      sudo tar -xzvf /backup/tomcat_app_conf_2025-08-30.tar.gz -C /
      
    • 启动 Tomcat:sudo systemctl start tomcat

三 自动化定时备份脚本

  • 创建脚本 /opt/backup_tomcat.sh
    #!/usr/bin/env bash
    set -e
    
    # 可按实际环境修改
    CATALINA_BASE="/var/lib/tomcat9"
    BACKUP_DIR="/backup/tomcat"
    KEEP_DAYS=7
    
    DATE=$(date +%F)
    mkdir -p "$BACKUP_DIR"
    
    # 1) 配置与应用
    tar -czf "$BACKUP_DIR/tomcat_app_conf_${DATE}.tar.gz" \
      -C "$CATALINA_BASE" conf webapps
    
    # 2) 日志(可选)
    tar -czf "$BACKUP_DIR/tomcat_logs_${DATE}.tar.gz" \
      -C "$CATALINA_BASE" logs
    
    # 3) 清理旧备份
    find "$BACKUP_DIR" -name "tomcat_*.tar.gz" -mtime +${KEEP_DAYS} -delete
    
    echo "Backup finished at $(date)"
    
  • 赋权并加入定时任务(每天 02:00 执行):
    sudo chmod +x /opt/backup_tomcat.sh
    (crontab -l 2>/dev/null; echo "0 2 * * * /opt/backup_tomcat.sh") | crontab -
    
  • 如需远程留存,可在脚本中增加 rsyncscp 同步到备份服务器。

四 日志轮转与远程备份

  • 使用 logrotate 管理日志(避免日志无限增长):
    • 新建配置 /etc/logrotate.d/tomcat
      /var/log/tomcat9/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 tomcat tomcat
        sharedscripts
        postrotate
          systemctl reload tomcat >/dev/null 2>&1 || true
        endscript
      }
      
    • 测试与强制执行:
      sudo logrotate -d /etc/logrotate.conf    # 语法与执行计划演练
      sudo logrotate -f /etc/logrotate.d/tomcat # 立即执行一次
      
  • 远程备份示例(在备份脚本或单独任务中调用):
    • rsync(增量、高效):
      rsync -avz /backup/tomcat/ user@backup-server:/backup/tomcat/
      
    • scp(简单拷贝):
      scp /backup/tomcat/*.tar.gz user@backup-server:/backup/tomcat/
      
  • 如应用使用数据库,务必同时备份数据库(示例为 MySQL):
    mysqldump -u USER -pPASSWORD --single-transaction --routines --triggers DATABASE > \
      /backup/tomcat_db_$(date +%F).sql
    
    恢复时使用:mysql -u USER -pPASSWORD DATABASE < /backup/tomcat_db_YYYY-MM-DD.sql

0