首页主机资讯Tomcat在CentOS上如何配置备份策略

Tomcat在CentOS上如何配置备份策略

时间2025-12-12 00:39:03发布访客分类主机资讯浏览719
导读:Tomcat 在 CentOS 上的备份策略 一 备份范围与策略设计 备份范围建议覆盖:应用与数据目录(如 webapps、work、temp)、配置目录(如 conf)、日志目录(如 logs),以及外部持久化数据(如数据库、文件存储)...

Tomcat 在 CentOS 上的备份策略

一 备份范围与策略设计

  • 备份范围建议覆盖:应用与数据目录(如 webappsworktemp)、配置目录(如 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。

五 恢复流程与验证

  • 全量恢复步骤
    1. 停止服务:systemctl stop tomcat
    2. 备份当前目录(可选):mv /opt/tomcat /opt/tomcat.bak_$(date +%F)
    3. 解压恢复:tar xzvf /opt/backup/tomcat/tomcat_full_YYYY-MM-DD_HHMMSS.tar.gz -C /
    4. 启动服务:systemctl start tomcat
    5. 验证:访问应用健康检查接口、查看 catalina.out 与业务日志是否正常
  • 日志恢复:将按天备份的 catalina.out.YYYY-MM-DD.log 按需拷回 logs/ 目录查看。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Tomcat在CentOS上如何配置备份策略
本文地址: https://pptw.com/jishu/769996.html
如何在CentOS中配置Tomcat用户权限 如何调整CentOS中Tomcat内存设置

游客 回复需填写必要信息