Ubuntu 上备份 Tomcat 数据的实用方案
一 备份范围与准备
二 手动一次性备份与恢复
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
sudo tar -xzvf /backup/tomcat_app_conf_2025-08-30.tar.gz -C /
三 自动化定时备份脚本
#!/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)"
sudo chmod +x /opt/backup_tomcat.sh
(crontab -l 2>/dev/null; echo "0 2 * * * /opt/backup_tomcat.sh") | crontab -
四 日志轮转与远程备份
/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 -avz /backup/tomcat/ user@backup-server:/backup/tomcat/
scp /backup/tomcat/*.tar.gz user@backup-server:/backup/tomcat/
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。