在 Linux 下对 Tomcat 日志进行备份,常见且实用的做法有以下几种,按「简单 → 自动化」递进说明。
Tomcat 日志默认在:
$TOMCAT_HOME/logs/
常见日志文件:
catalina.outcatalina.2024-01-01.loglocalhost.logaccess_log_*cd /opt/tomcat/logs
tar czf tomcat-logs-$(date +%F).tar.gz *.log *.txt
备份到其他目录:
cp tomcat-logs-2026-01-21.tar.gz /backup/
vim /etc/logrotate.d/tomcat
/opt/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
copytruncate
}
说明:
copytruncate:不重启 Tomcat 直接截断日志(✅关键)rotate 7:保留 7 天compress:压缩旧日志logrotate -d /etc/logrotate.d/tomcat # 测试
logrotate -f /etc/logrotate.d/tomcat # 强制执行
crontab -e
添加:
0 0 * * * tar czf /backup/tomcat-logs-$(date +\%F).tar.gz /opt/tomcat/logs/*.log
查看:
crontab -l
#!/bin/bash
LOG_DIR=/opt/tomcat/logs
BACKUP_DIR=/backup/tomcat
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
tar czf $BACKUP_DIR/tomcat-logs-$DATE.tar.gz $LOG_DIR/*.log
# 删除 30 天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
赋予权限:
chmod +x backup_tomcat.sh
加入 cron:
0 1 * * * /path/backup_tomcat.sh
如果是 Docker:
docker cp tomcat:/usr/local/tomcat/logs ./logs-backup
或挂载卷:
-v /host/logs:/usr/local/tomcat/logs
✅ 使用 logrotate + copytruncate
✅ 定期备份到异地/NAS
✅ 保留周期 7~30 天
❌ 不要直接删除 catalina.out(可能写入失败)
如果你愿意,我可以:
你现在的 Tomcat 是 物理机 / 虚拟机 / Docker?