Ubuntu 上备份 Tomcat 的完整方案
一 备份范围与准备
ps -ef | grep catalina 或 grep -i catalina.home /opt/tomcat/bin/catalina.sh。二 手动一次性备份步骤
sudo systemctl stop tomcat 或 $CATALINA_HOME/bin/shutdown.sh。sudo tar -czvf /backup/tomcat_full_$(date +%F).tar.gz /opt/tomcatsudo tar -czvf /backup/tomcat_app_conf_$(date +%F).tar.gz /opt/tomcat/conf /opt/tomcat/webappssudo tar -czvf /backup/tomcat_logs_$(date +%F).tar.gz /opt/tomcat/logsmysqldump -u 用户名 -p 数据库名 > /backup/tomcat_db_$(date +%F).sqlsudo systemctl start tomcat。三 自动化与日志轮转
sudo nano /etc/logrotate.d/tomcat,示例:/opt/tomcat/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 tomcat tomcat
copytruncate
}
说明:
sudo logrotate -d /etc/logrotate.conf;强制运行:sudo logrotate -f /etc/logrotate.conf。#!/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.sh;crontab -e 添加 0 2 * * * /opt/backup_tomcat_logs.sh(每日 2:00 执行)。四 远程备份与异地容灾
rsync -avz --delete /backup/tomcat/ user@remote:/backup/tomcat/(适合日常增量备份与快速回滚)。scp /backup/tomcat_*.tar.gz user@remote:/backup/(适合定期全量拷贝)。五 恢复步骤与注意事项
sudo systemctl stop tomcat;sudo tar -xzvf /backup/tomcat_app_conf_YYYY-MM-DD.tar.gz -C /opt/tomcat;sudo tar -xzvf /backup/tomcat_logs_YYYY-MM-DD.tar.gz -C /opt/tomcat/logs;mysql -u 用户名 -p 数据库名 < /backup/tomcat_db_YYYY-MM-DD.sql;sudo systemctl start tomcat。sha256sum)。