Ubuntu下Tomcat备份与恢复方法
为避免备份过程中文件被修改导致数据不一致,建议先停止Tomcat服务。执行以下命令:
sudo systemctl stop tomcat
若无法停止服务(如生产环境不允许停机),可直接备份,但需承担数据不一致风险。
Tomcat的核心数据包括配置文件、Web应用程序、日志文件,部分场景需备份关联数据库:
server.xml、web.xml)位于/conf目录,Web应用位于/webapps目录。使用tar命令打包这两个目录(保留目录结构):sudo tar -czvf /backup/tomcat_config_webapps_$(date +%Y%m%d).tar.gz /path/to/tomcat/conf /path/to/tomcat/webapps/path/to/tomcat需替换为实际Tomcat安装路径,如/opt/tomcat或/usr/share/tomcat9)/logs目录(如catalina.out、localhost_access_log.*.txt)。备份命令:sudo tar -czvf /backup/tomcat_logs_$(date +%Y%m%d).tar.gz /path/to/tomcat/logsfind命令:sudo find /path/to/tomcat/logs -mtime +7 -type f -deletemysqldump导出指定数据库:mysqldump -u [username] -p[password] [database_name] > /backup/tomcat_db_[database_name]_$(date +%Y%m%d).sql[username]、[password]、[database_name]需替换为实际值,密码与用户名之间无空格)通过脚本+定时任务实现定期自动备份:
/opt/backup_tomcat.sh,内容如下:#!/bin/bash
BACKUP_DIR="/backup"
TOMCAT_PATH="/opt/tomcat"
DATE=$(date +%Y%m%d)
# 备份配置文件与Web应用
tar -czvf "$BACKUP_DIR/tomcat_config_webapps_$DATE.tar.gz" "$TOMCAT_PATH/conf" "$TOMCAT_PATH/webapps"
# 备份日志文件并清理旧日志
tar -czvf "$BACKUP_DIR/tomcat_logs_$DATE.tar.gz" "$TOMCAT_PATH/logs"
find "$TOMCAT_PATH/logs" -mtime +7 -type f -delete
# 备份数据库(若有)
# mysqldump -u root -p123456 mydb > "$BACKUP_DIR/mydb_$DATE.sql"
赋予脚本执行权限:sudo chmod +x /opt/backup_tomcat.shcrontab -e添加以下行,实现每天凌晨2点自动备份:0 2 * * * /opt/backup_tomcat.sh除上述通用方法外,Tomcat日志可通过以下方式单独管理:
logrotate工具,可自动轮转、压缩、删除旧日志。创建/etc/logrotate.d/tomcat文件,内容如下:/opt/tomcat/logs/*.log { daily rotate 7 compress missingok notifempty create 0644 tomcat tomcat sharedscripts postrotate systemctl reload tomcat > /dev/null endscript }0644,所有者为tomcat用户(需根据实际用户调整)恢复前需停止Tomcat,避免文件冲突:
sudo systemctl stop tomcat
sudo tar -xzvf /backup/tomcat_config_webapps_YYYYMMDD.tar.gz -C /path/to/tomcatYYYYMMDD为备份日期,如20251109)sudo tar -xzvf /backup/tomcat_logs_YYYYMMDD.tar.gz -C /path/to/tomcat/logsmysql命令导入:mysql -u [username] -p[password] [database_name] < /backup/tomcat_db_[database_name]_YYYYMMDD.sql恢复完成后,启动Tomcat使配置生效:
sudo systemctl start tomcat
可通过sudo systemctl status tomcat检查服务状态