CentOS Tomcat日志备份策略
策略总览
本地轮转与清理
/opt/tomcat/logs/catalina.out {
daily
rotate 30
size 100M
copytruncate
compress
delaycompress
dateext
dateformat .%Y-%m-%d
missingok
notifempty
su tomcat tomcat
}
要点说明:
/opt/tomcat/logs/*.log {
daily
rotate 14
compress
missingok
notifempty
create 640 tomcat tomcat
su tomcat tomcat
}
logrotate -f /etc/logrotate.d/tomcat
logrotate -d /etc/logrotate.d/tomcat # 语法/规则校验
异地与离线归档
#!/bin/bash
set -e
TOMCAT_LOGS="/opt/tomcat/logs"
BACKUP_BASE="/backup/tomcat"
KEEP_LOCAL_DAYS=7
ARCHIVE_DAYS=30
mkdir -p "$BACKUP_BASE/archive"
# 1) 打包昨天的已轮转日志(如 catalina.out-2025-12-22.gz)
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
cd "$TOMCAT_LOGS" || exit 1
ARCHIVE_FILE="$BACKUP_BASE/archive/tomcat_logs_${YESTERDAY}.tar.gz"
find . -maxdepth 1 -name "*${YESTERDAY}*.gz" -print0 | \
xargs -0 tar -czf "$ARCHIVE_FILE" --remove-files 2>/dev/null || true
# 2) 清理本地旧归档
find "$TOMCAT_LOGS" -name "*.gz" -mtime +$KEEP_LOCAL_DAYS -delete
find "$BACKUP_BASE/archive" -name "*.tar.gz" -mtime +$ARCHIVE_DAYS -delete
# 3) (可选)同步到远程存储(示例:rsync 到备份服务器)
# rsync -avz --delete "$BACKUP_BASE/archive/" backup@backup.example.com:/data/tomcat/
0 2 * * * /usr/local/bin/tomcat_log_archive.sh >> /var/log/tomcat_archive.log 2>&1
监控与容量规划