温馨提示×

Tomcat在Ubuntu上如何备份

小樊
38
2025-12-13 02:56:24
栏目: 智能运维

Ubuntu 上备份 Tomcat 的完整方案

一 备份范围与准备

  • 明确备份范围:优先备份 $CATALINA_BASE/conf(配置)、$CATALINA_BASE/webapps(应用)、$CATALINA_BASE/logs(日志,可选),以及应用使用的 数据库
  • 确认目录位置:常见安装路径为 /opt/tomcat/var/lib/tomcat9,日志通常为 /var/log/tomcat9$CATALINA_BASE/logs;如不确定,执行:ps -ef | grep catalinagrep -i catalina.home /opt/tomcat/bin/catalina.sh
  • 准备备份目录与权限:例如创建 /backup/tomcat,并确保运行备份的用户有读写权限。
  • 涉及数据库时,准备相应账号与导出工具(如 mysqldump)。

二 手动一次性备份步骤

  • 停止 Tomcat(强烈建议,避免备份过程中文件变更):sudo systemctl stop tomcat$CATALINA_HOME/bin/shutdown.sh
  • 备份配置与应用:
    • 全量:sudo tar -czvf /backup/tomcat_full_$(date +%F).tar.gz /opt/tomcat
    • 仅配置与应用:sudo tar -czvf /backup/tomcat_app_conf_$(date +%F).tar.gz /opt/tomcat/conf /opt/tomcat/webapps
  • 备份日志(可选):sudo tar -czvf /backup/tomcat_logs_$(date +%F).tar.gz /opt/tomcat/logs
  • 备份数据库(如 MySQL):mysqldump -u 用户名 -p 数据库名 > /backup/tomcat_db_$(date +%F).sql
  • 启动 Tomcat:sudo systemctl start tomcat

三 自动化与日志轮转

  • 使用 logrotate 管理日志(推荐)
    新建配置:sudo nano /etc/logrotate.d/tomcat,示例:
    /opt/tomcat/logs/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 tomcat tomcat
        copytruncate
    }
    
    说明:
    • daily/rotate 7/compress 实现按日轮转并保留 7 天
    • copytruncate 先复制再清空原文件,避免重启 Tomcat;
    • 测试:sudo logrotate -d /etc/logrotate.conf;强制运行:sudo logrotate -f /etc/logrotate.conf
  • 使用 Shell 脚本定时归档与清理
    示例脚本(保留 7 天):
    #!/usr/bin/env bash
    set -e
    LOG_PATH="/opt/tomcat/logs"
    BACKUP_DIR="/backup/tomcat"
    DATE=$(date +%F)
    
    mkdir -p "$BACKUP_DIR"
    # 归档并清空 catalina.out
    [ -f "$LOG_PATH/catalina.out" ] && {
      cp "$LOG_PATH/catalina.out" "$BACKUP_DIR/catalina.$DATE.log"
      : > "$LOG_PATH/catalina.out"
    }
    # 打包其余 .log
    tar czf "$BACKUP_DIR/tomcat_logs_$DATE.tar.gz" -C "$LOG_PATH" ./*.log 2>/dev/null || true
    # 清理 7 天前归档
    find "$BACKUP_DIR" -name "tomcat_logs_*.tar.gz" -mtime +7 -delete
    find "$BACKUP_DIR" -name "catalina.*.log" -mtime +7 -delete
    
    赋权并加入计划任务:chmod +x /opt/backup_tomcat_logs.shcrontab -e 添加 0 2 * * * /opt/backup_tomcat_logs.sh(每日 2:00 执行)。

四 远程备份与异地容灾

  • rsync 增量同步到远程主机:
    rsync -avz --delete /backup/tomcat/ user@remote:/backup/tomcat/(适合日常增量备份与快速回滚)。
  • scp 拷贝归档文件:
    scp /backup/tomcat_*.tar.gz user@remote:/backup/(适合定期全量拷贝)。

五 恢复步骤与注意事项

  • 恢复顺序:
    1. 停止 Tomcat:sudo systemctl stop tomcat
    2. 恢复配置与应用:sudo tar -xzvf /backup/tomcat_app_conf_YYYY-MM-DD.tar.gz -C /opt/tomcat
    3. 恢复日志(可选):sudo tar -xzvf /backup/tomcat_logs_YYYY-MM-DD.tar.gz -C /opt/tomcat/logs
    4. 恢复数据库:mysql -u 用户名 -p 数据库名 < /backup/tomcat_db_YYYY-MM-DD.sql
    5. 启动 Tomcat:sudo systemctl start tomcat
  • 注意事项:
    • 变更窗口内执行备份,避免文件处于写入状态;
    • 保留策略建议至少 7 天,关键环境可 30 天 或更长;
    • 定期在测试环境演练恢复流程;
    • 备份文件做 异地/离线 副本(如云存储/移动盘),并校验完整性(如 sha256sum)。

0