Debian环境下Tomcat备份与恢复策略
一 备份范围与策略
二 快速上手 手动备份与恢复
sudo systemctl stop tomcatsudo tar czvf /backup/tomcat_backup_$(date +%Y%m%d).tar.gz /opt/tomcatsudo tar czvf /backup/tomcat_backup_$(date +%Y%m%d).tar.gz /opt/tomcat/conf /opt/tomcat/webappssudo tar czvf /backup/tomcat_logs_$(date +%Y%m%d).tar.gz /opt/tomcat/logsmysqldump -u 用户名 -p 数据库名 > db_$(date +%Y%m%d).sqlsudo systemctl start tomcatsudo systemctl stop tomcatsudo tar -xzvf /backup/tomcat_backup_YYYYMMDD.tar.gz -C /opt/tomcatsudo tar -xzvf /backup/tomcat_logs_YYYYMMDD.tar.gz -C /opt/tomcat/logsmysql -u 用户名 -p 数据库名 < db_YYYYMMDD.sqlsudo systemctl start tomcat三 自动化备份脚本与定时任务
#!/usr/bin/env bash
set -Eeuo pipefail
# 配置区
TOMCAT_DIR="/opt/tomcat" # 根据实际路径调整
BACKUP_DIR="/backup/tomcat"
DATE=$(date +%Y%m%d%H%M%S)
DB_HOST="localhost"
DB_NAME="your_db"
DB_USER="your_user"
DB_PASS="your_password"
STOP_TOMCAT=true # 设为 false 可尝试热备(需自测一致性)
# 初始化
mkdir -p "$BACKUP_DIR"
# 可选停机
if $STOP_TOMCAT; then
echo "[$(date)] 停止 Tomcat ..."
sudo systemctl stop tomcat || { echo "停止失败"; exit 1; }
trap 'sudo systemctl start tomcat' EXIT
fi
# 全量打包(使用 -C 避免绝对路径前缀)
tar czvf "$BACKUP_DIR/tomcat_backup_$DATE.tar.gz" -C "$TOMCAT_DIR" .
# 日志单独打包
if [[ -d "$TOMCAT_DIR/logs" ]]; then
tar czvf "$BACKUP_DIR/tomcat_logs_$DATE.tar.gz" -C "$TOMCAT_DIR/logs" .
fi
# 数据库备份(如无需可注释)
mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" \
> "$BACKUP_DIR/tomcat_db_$DATE.sql"
# 清理 7 天前备份
find "$BACKUP_DIR" -name "tomcat_backup_*" -type f -mtime +7 -delete
find "$BACKUP_DIR" -name "tomcat_logs_*" -type f -mtime +7 -delete
find "$BACKUP_DIR" -name "tomcat_db_*" -type f -mtime +7 -delete
echo "[$(date)] 备份完成:$BACKUP_DIR"
crontab -e0 2 * * * /path/to/backup_tomcat.sh >> /var/log/tomcat_backup.log 2>&1~/.my.cnf 或凭据文件方式避免明文出现在命令行。四 恢复流程与验证清单
sudo systemctl stop tomcatsudo tar -xzvf /backup/tomcat_backup_YYYYMMDD.tar.gz -C /opt/tomcatsudo tar -xzvf /backup/tomcat_logs_YYYYMMDD.tar.gz -C /opt/tomcat/logsmysql -u 用户名 -p 数据库名 < db_YYYYMMDD.sqlsudo systemctl start tomcat五 高可用与进阶建议