Tomcat在CentOS上如何配置备份策略
导读:Tomcat 在 CentOS 上的备份策略 一 备份范围与策略设计 备份范围建议覆盖:应用与数据目录(如 webapps、work、temp)、配置目录(如 conf)、日志目录(如 logs),以及外部持久化数据(如数据库、文件存储)...
Tomcat 在 CentOS 上的备份策略
一 备份范围与策略设计
- 备份范围建议覆盖:应用与数据目录(如 webapps、work、temp)、配置目录(如 conf)、日志目录(如 logs),以及外部持久化数据(如数据库、文件存储)。
- 备份方式:使用 tar.gz 全量打包,结合 Systemd 管理 Tomcat 服务,必要时在备份窗口内短暂停机以保证一致性。
- 保留策略:本地保留 7–30 天;关键备份可同步到远端(如 FTP/SFTP)或对象存储,形成 3-2-1 策略雏形(3 份副本、2 种介质、1 份异地)。
- 日志策略:对 catalina.out 按天轮转备份并截断,历史日志压缩归档,保留 7–30 天;其余日志交由 logrotate 管理。
- 运行时段:选择业务低峰(如 02:00–04:00)执行,降低对线上影响。
二 全量与增量备份脚本
- 全量备份脚本(示例路径可按需调整)
#!/bin/bash
# 配置区
CATALINA_HOME="/opt/tomcat"
BACKUP_ROOT="/opt/backup/tomcat"
DATE_TAG=$(date +%F_%H%M%S)
RETENTION_DAYS=14
# 创建备份目录
mkdir -p "$BACKUP_ROOT"
# 可选:短暂停机保证一致性(如无应用写入可注释)
# systemctl stop tomcat
# 打包关键目录(排除备份目录自身与虚拟文件系统)
tar czvf "$BACKUP_ROOT/tomcat_full_${
DATE_TAG}
.tar.gz" \
--exclude="$BACKUP_ROOT" \
--exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run \
"$CATALINA_HOME/webapps" \
"$CATALINA_HOME/conf" \
"$CATALINA_HOME/logs" \
"$CATALINA_HOME/work" \
"$CATALINA_HOME/temp"
# 可选:恢复服务
# systemctl start tomcat
# 清理过期备份
find "$BACKUP_ROOT" -name "tomcat_full_*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "Full backup completed: $BACKUP_ROOT/tomcat_full_${
DATE_TAG}
.tar.gz"
- 增量思路(基于 rsync)
- 首次执行全量备份到 /opt/backup/tomcat/base/;
- 后续每天执行:
- rsync 增量到 /opt/backup/tomcat/incr/YYYY-MM-DD/;
- 每周合并一次增量到全量(rsync 的 –link-dest 可做“硬链接快照”,节省空间)。
- 使用说明:将脚本保存为 /usr/local/bin/tomcat_backup.sh,赋权 chmod +x,通过 cron 定时执行(见第四节)。
三 日志轮转与清理
- 按天备份并截断 catalina.out(避免单文件过大)
#!/bin/bash
LOG_DIR="/opt/tomcat/logs"
YESTERDAY=$(date -d '1 day ago' +%F)
cd "$LOG_DIR" || exit 1
# 备份并清空 catalina.out
cp catalina.out "catalina.out.${
YESTERDAY}
.log"
: >
catalina.out
# 删除 30 天前的日志
find "$LOG_DIR" -name "catalina.out.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "catalina.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "localhost_access_log.*.txt" -mtime +30 -delete
find "$LOG_DIR" -name "localhost.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "host-manager.*.log" -mtime +30 -delete
find "$LOG_DIR" -name "manager.*.log" -mtime +30 -delete
- 使用 logrotate 管理其他日志(/etc/logrotate.d/tomcat)
/opt/tomcat/logs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 tomcat tomcat
copytruncate
}
- 说明:copytruncate 适用于无法用信号重新打开日志的场景;若 Tomcat 支持日志框架按天切分,可关闭 copytruncate 并配合 log4j/logback 配置。
四 定时任务与远端备份
- 定时执行全量备份(示例:每日 02:30)
# 编辑 root 的 crontab
crontab -e
# 每天 02:30 执行全量备份
30 2 * * * /usr/local/bin/tomcat_backup.sh >
>
/var/log/tomcat_backup.log 2>
&
1
- 远端备份到 FTP(示例脚本)
#!/bin/bash
BACKUP_FILE="/opt/backup/tomcat/tomcat_full_$(date +%F_%H%M%S).tar.gz"
FTP_HOST="192.168.10.20"
FTP_USER="backup"
FTP_PASS="YourPass"
ftp -v -n <
<
EOF
open $FTP_HOST
user $FTP_USER $FTP_PASS
binary
cd /backup/tomcat
put $BACKUP_FILE
quit
EOF
# 可选:上传成功后删除本地副本(谨慎)
# rm -f "$BACKUP_FILE"
- 安全建议:优先使用 SFTP/RSYNC over SSH 或对象存储 SDK;FTP 明文传输需在内网或启用 TLS。
五 恢复流程与验证
- 全量恢复步骤
- 停止服务:systemctl stop tomcat
- 备份当前目录(可选):mv /opt/tomcat /opt/tomcat.bak_$(date +%F)
- 解压恢复:tar xzvf /opt/backup/tomcat/tomcat_full_YYYY-MM-DD_HHMMSS.tar.gz -C /
- 启动服务:systemctl start tomcat
- 验证:访问应用健康检查接口、查看 catalina.out 与业务日志是否正常
- 日志恢复:将按天备份的 catalina.out.YYYY-MM-DD.log 按需拷回 logs/ 目录查看。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Tomcat在CentOS上如何配置备份策略
本文地址: https://pptw.com/jishu/769996.html
