温馨提示×

怎样备份CentOS Java日志

小樊
46
2026-07-08 23:08:29
栏目: 编程语言

下面给你几种在 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 或备份脚本

0