温馨提示×

Java日志CentOS如何备份

小樊
42
2026-08-30 07:43:02
栏目: 编程语言

CentOS 上备份 Java 应用日志,常见做法分几种场景,下面给你一套实用、可落地的方案(从简单到规范)。


一、Java 日志一般在哪?

常见路径:

/var/log/
/opt/xxx/logs/
/home/xxx/logs/

如果是 Spring Boot:

logs/application.log
logs/app.log

二、最基础的方式(手动备份)

1️⃣ 直接复制备份

cp /opt/app/logs/app.log /opt/app/logs/app.log.bak

2️⃣ 打包压缩(推荐)

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

三、自动备份(定时任务 ✅ 推荐)

1️⃣ 编写备份脚本

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

脚本内容:

#!/bin/bash

SRC="/opt/app/logs"
DEST="/opt/backup/logs"
DATE=$(date +%F)

tar -czvf $DEST/app-log-$DATE.tar.gz $SRC

# 只保留最近 7 天
find $DEST -name "*.tar.gz" -mtime +7 -delete

赋权:

chmod +x /opt/backup/backup_java_log.sh

2️⃣ 加入 crontab

crontab -e

每天凌晨 2 点执行:

0 2 * * * /opt/backup/backup_java_log.sh >> /opt/backup/logs/backup.log 2>&1

四、在 Java 日志框架层面配合(更优雅 ✅)

✅ 使用 Logback(最常见)

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/opt/app/logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/opt/app/logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

✅ 优点:

  • 自动按天切分
  • 自动删除旧日志
  • 不需要额外备份脚本

五、备份到远程服务器(生产环境推荐)

方式一:rsync 同步

rsync -avz /opt/app/logs/ user@backup:/backup/logs/

方式二:scp 定时备份

scp /opt/backup/logs/*.tar.gz user@backup:/backup/

六、避坑指南 ⚠️

不要直接 cp 正在写入的日志

  • 建议:
    • log rotate
    • kill -HUP PID 让 Java 重新打开日志文件

避免磁盘被日志写满

df -h
du -sh /opt/app/logs

日志太大时

  • 拆分
  • 压缩
  • 限制大小

七、推荐生产方案(总结)

场景 推荐方案
小项目 tar + cron
Spring Boot Logback 自动滚动
生产环境 Logback + rsync
合规要求 备份 + 7~30 天保留

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

  • ✅ Java 项目类型(Spring Boot / 普通 Java)
  • ✅ 日志框架(logback / log4j2)
  • ✅ 是否是生产环境

我可以 直接给你一份立即可用的配置方案

0