温馨提示×

CentOS Java日志怎么备份

小樊
37
2026-08-19 04:14:53
栏目: 编程语言

CentOS 上备份 Java 日志(如 Tomcat、Spring Boot、微服务日志等),通常做法是 按时间打包 + 定时清理 + 可选压缩。下面给你一套 常用、可落地的方案


一、常见 Java 日志位置

常见路径(按实际情况调整):

/var/log/java/
/opt/app/logs/
/home/app/logs/
/usr/local/tomcat/logs/

日志文件常见名:

app.log
catalina.out
spring.log
error.log

二、手动备份(临时 / 一次性)

1️⃣ 复制备份

cp /opt/app/logs/app.log /opt/backup/app-$(date +%F).log

2️⃣ 压缩备份(推荐)

tar -czf /opt/backup/app-logs-$(date +%F).tar.gz /opt/app/logs/

三、自动备份(推荐方案)

方案一:cron + shell 脚本(最常用)

1️⃣ 创建备份脚本

mkdir -p /opt/backup
vi /opt/backup_java_log.sh

脚本内容(示例):

#!/bin/bash

LOG_DIR=/opt/app/logs
BACKUP_DIR=/opt/backup
DATE=$(date +%F)
KEEP_DAYS=7

# 创建备份目录
mkdir -p $BACKUP_DIR

# 打包日志
tar -czf $BACKUP_DIR/java-logs-$DATE.tar.gz $LOG_DIR

# 删除 7 天前的备份
find $BACKUP_DIR -name "java-logs-*.tar.gz" -mtime +$KEEP_DAYS -delete

✅ 保留最近 7 天 备份

2️⃣ 赋予执行权限

chmod +x /opt/backup_java_log.sh

3️⃣ 加入 crontab

crontab -e

每天凌晨 2 点执行:

0 2 * * * /opt/backup_java_log.sh >> /var/log/backup-java.log 2>&1

四、如果 Java 日志是正在写入的(重点)

✅ 推荐方式:先转储,再备份

1️⃣ 使用 logrotate(最佳实践)

vi /etc/logrotate.d/java-app

示例配置:

/opt/app/logs/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

含义:

  • daily:每天轮转
  • rotate 7:保留 7 份
  • compress:压缩
  • copytruncate:不重启 Java 进程

适合 Tomcat / Spring Boot


五、Docker / Kubernetes 场景(补充)

Docker

docker cp 容器名:/app/logs /opt/backup/

Kubernetes

kubectl cp pod名:/app/logs /opt/backup/

或挂载 PV 再备份。


六、推荐组合(生产环境)

最佳方案

logrotate 管理日志轮转
cron + tar 自动备份
只保留 7~30 天

七、排错建议

  • 检查磁盘空间:df -h
  • 检查 cron 是否执行:systemctl status crond
  • 查看日志:tail -f /var/log/backup-java.log

如果你愿意,可以告诉我:

  • ✅ Java 应用类型(Tomcat / Spring Boot / 微服务)
  • ✅ 是否 Docker
  • ✅ 日志路径

我可以帮你定制一份可直接用的备份方案

0