一、备份前的准备工作
sudo systemctl stop tomcat # 适用于大多数Linux发行版(CentOS、Debian等)
停止后可通过ps -ef | grep java
验证Tomcat进程是否已终止。/opt/backup/tomcat
、远程服务器或云存储),避免备份文件与Tomcat运行目录在同一分区(防止磁盘空间耗尽影响备份)。二、Linux下Tomcat备份步骤
Tomcat的备份需覆盖配置文件、Web应用、日志、临时文件等关键内容,常用tar
命令打包(支持压缩以节省空间):
server.xml
、web.xml
)位于conf
目录,命令示例:sudo tar -czvf tomcat_conf_$(date +%Y%m%d).tar.gz /opt/tomcat/conf # Debian/Ubuntu默认路径
sudo tar -czvf tomcat_conf_$(date +%Y%m%d).tar.gz /etc/tomcat/conf # CentOS默认路径
.war
文件及解压后的目录)位于webapps
目录,命令示例:sudo tar -czvf tomcat_webapps_$(date +%Y%m%d).tar.gz /opt/tomcat/webapps # Debian/Ubuntu
sudo tar -czvf tomcat_webapps_$(date +%Y%m%d).tar.gz /var/lib/tomcat/webapps # CentOS
catalina.out
)、访问日志(access_log
)位于logs
目录,命令示例:sudo tar -czvf tomcat_logs_$(date +%Y%m%d).tar.gz /opt/tomcat/logs # Debian/Ubuntu
sudo tar -czvf tomcat_logs_$(date +%Y%m%d).tar.gz /var/log/tomcat # CentOS
temp
(临时文件)、work
(JSP编译文件)目录虽非必需,但备份后可避免重新生成耗时,命令示例:sudo tar -czvf tomcat_temp_$(date +%Y%m%d).tar.gz /opt/tomcat/temp # Debian/Ubuntu
sudo tar -czvf tomcat_temp_$(date +%Y%m%d).tar.gz /var/lib/tomcat/temp # CentOS
sudo tar -czvf tomcat_work_$(date +%Y%m%d).tar.gz /opt/tomcat/work # Debian/Ubuntu
sudo tar -czvf tomcat_work_$(date +%Y%m%d).tar.gz /var/lib/tomcat/work # CentOS
备份时可排除临时文件、系统目录等无关内容,提升备份效率:
sudo tar -czvf tomcat_full_backup_$(date +%Y%m%d).tar.gz \
--exclude=/opt/tomcat/temp/* \
--exclude=/opt/tomcat/work/* \
--exclude=/opt/tomcat/backups/* \ # 排除之前的备份目录
/opt/tomcat/conf /opt/tomcat/webapps /opt/tomcat/logs
将备份文件复制到安全位置(如远程服务器),避免本地磁盘故障导致备份丢失:
sudo scp tomcat_conf_$(date +%Y%m%d).tar.gz user@remote_host:/backups/tomcat/
sudo scp tomcat_webapps_$(date +%Y%m%d).tar.gz user@remote_host:/backups/tomcat/
通过cron
定时任务实现每日自动备份,步骤如下:
/opt/scripts/backup_tomcat.sh
):#!/bin/bash
# 停止Tomcat
sudo systemctl stop tomcat
# 创建备份目录
BACKUP_DIR="/opt/backup/tomcat"
mkdir -p "$BACKUP_DIR"
# 备份配置文件
sudo tar -czvf "$BACKUP_DIR/tomcat_conf_$(date +%Y%m%d).tar.gz" /opt/tomcat/conf
# 备份Web应用
sudo tar -czvf "$BACKUP_DIR/tomcat_webapps_$(date +%Y%m%d).tar.gz" /opt/tomcat/webapps
# 备份日志
sudo tar -czvf "$BACKUP_DIR/tomcat_logs_$(date +%Y%m%d).tar.gz" /opt/tomcat/logs
# 启动Tomcat
sudo systemctl start tomcat
chmod +x /opt/scripts/backup_tomcat.sh
cron
任务(每日凌晨2点执行):crontab -e
# 添加以下行
0 2 * * * /opt/scripts/backup_tomcat.sh
三、Linux下Tomcat恢复步骤
恢复前需停止Tomcat,确保恢复过程中文件不会被修改:
sudo systemctl stop tomcat
使用tar
命令解压备份文件到对应目录(覆盖原有文件):
sudo tar -xzvf tomcat_conf_$(date +%Y%m%d).tar.gz -C /opt/tomcat/ # Debian/Ubuntu
sudo tar -xzvf tomcat_conf_$(date +%Y%m%d).tar.gz -C /etc/tomcat/ # CentOS
sudo tar -xzvf tomcat_webapps_$(date +%Y%m%d).tar.gz -C /opt/tomcat/ # Debian/Ubuntu
sudo tar -xzvf tomcat_webapps_$(date +%Y%m%d).tar.gz -C /var/lib/tomcat/ # CentOS
sudo tar -xzvf tomcat_logs_$(date +%Y%m%d).tar.gz -C /opt/tomcat/logs/ # Debian/Ubuntu
sudo tar -xzvf tomcat_logs_$(date +%Y%m%d).tar.gz -C /var/log/tomcat/ # CentOS
若Tomcat应用连接了MySQL、PostgreSQL等数据库,需提前恢复数据库备份(以MySQL为例):
mysql -u root -p database_name < /backup/mysql/database_backup.sql
恢复完成后启动Tomcat,检查是否正常运行:
sudo systemctl start tomcat
# 验证状态
sudo systemctl status tomcat
# 查看日志确认无报错
tail -f /opt/tomcat/logs/catalina.out # Debian/Ubuntu
tail -f /var/log/tomcat/catalina.out # CentOS
四、备份与恢复的注意事项
gpg
加密:gpg -c tomcat_conf_$(date +%Y%m%d).tar.gz # 生成加密文件tomcat_conf_*.tar.gz.gpg
find
命令自动清理):find /opt/backup/tomcat -name "tomcat_*" -mtime +30 -exec rm {} \; # 删除30天前的备份
mail
命令或logger
记录)。