下面给你几种在 CentOS 上备份 Java 日志的常见做法,从简单到自动化,你可以按实际需求选择。
一、常见的 Java 日志位置
Java 日志通常位于以下目录之一(取决于应用):
- Tomcat
/usr/local/tomcat/logs/ /var/log/tomcat/ - Spring Boot(默认或配置)
/var/log/your-app/ ./logs/ - 自定义 logback / log4j
/opt/app/logs/
先确认日志路径:
ls -lh /path/to/java/logs
二、手动备份(最简单)
1️⃣ 打包备份
tar -czvf java-logs-$(date +%F).tar.gz /path/to/java/logs
示例:
tar -czvf java-logs-2026-01-21.tar.gz /opt/app/logs
2️⃣ 拷贝到备份目录
cp -r /opt/app/logs /backup/java-logs-$(date +%F)
三、按日期自动切割(推荐)
1️⃣ 使用 logrotate(最常用 ✅)
创建 logrotate 配置
vim /etc/logrotate.d/java-app
示例配置:
/opt/app/logs/*.log {
daily
rotate 30
missingok
notifempty
compress
dateext
copytruncate
}
说明:
daily:每天备份rotate 30:保留 30 份compress:压缩dateext:带日期copytruncate:不重启 Java 应用
测试是否生效
logrotate -vf /etc/logrotate.d/java-app
四、定时自动备份(cron)
1️⃣ 编写备份脚本
vim /usr/local/bin/backup_java_logs.sh
内容:
#!/bin/bash
SRC=/opt/app/logs
DEST=/backup/java-logs
DATE=$(date +%F)
mkdir -p $DEST
tar -czvf $DEST/java-logs-$DATE.tar.gz $SRC
赋予执行权限:
chmod +x /usr/local/bin/backup_java_logs.sh
2️⃣ 加入 crontab
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/local/bin/backup_java_logs.sh >> /var/log/java-backup.log 2>&1
五、保留策略(防止磁盘爆满)
只保留最近 N 天:
find /backup/java-logs -name "*.tar.gz" -mtime +30 -delete
加到 cron:
0 3 * * * find /backup/java-logs -name "*.tar.gz" -mtime +30 -delete
六、备份到远程服务器(可选)
使用 rsync
rsync -avz /backup/java-logs/ user@backup-server:/data/backup/java-logs/
七、推荐方案(生产环境)
✅ logrotate + cron + 远程备份
- 日志实时切割
- 自动压缩
- 不中断 Java 进程
- 防止磁盘满
如果你愿意,可以告诉我:
- Java 应用类型(Tomcat / Spring Boot / 其他)
- 日志路径
- 是否允许重启应用
我可以帮你直接写一份可用的 logrotate 或备份脚本。
