温馨提示×

centos apache日志怎样备份

小樊
43
2026-10-26 16:19:04
栏目: 智能运维

在 CentOS 上备份 Apache 日志,通常有手动备份、脚本+定时任务以及使用 logrotate几种方式。下面按常见场景给你说明。


一、Apache 日志位置(CentOS)

默认路径一般为:

/var/log/httpd/access_log
/var/log/httpd/error_log

如果你用的是自定义配置,查看:

grep -R "CustomLog\|ErrorLog" /etc/httpd/conf/

二、手动备份(最简单)

cp /var/log/httpd/access_log /backup/httpd/access_log_$(date +%F)
cp /var/log/httpd/error_log /backup/httpd/error_log_$(date +%F)

建议先创建备份目录:

mkdir -p /backup/httpd

三、使用脚本 + cron 定时备份(推荐)

1. 编写备份脚本

vi /usr/local/bin/backup_httpd_log.sh

内容示例:

#!/bin/bash
BACKUP_DIR=/backup/httpd
DATE=$(date +%F)

mkdir -p $BACKUP_DIR
cp /var/log/httpd/access_log $BACKUP_DIR/access_log_$DATE
cp /var/log/httpd/error_log $BACKUP_DIR/error_log_$DATE

# 可选:压缩
gzip $BACKUP_DIR/access_log_$DATE
gzip $BACKUP_DIR/error_log_$DATE

赋予执行权限:

chmod +x /usr/local/bin/backup_httpd_log.sh

2. 加入定时任务

crontab -e

每天凌晨 1 点备份:

0 1 * * * /usr/local/bin/backup_httpd_log.sh

四、使用 logrotate(CentOS 默认已集成,最规范)

CentOS 的 Apache 通常已经由 logrotate 管理:

/etc/logrotate.d/httpd

示例配置:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd > /dev/null 2>&1 || true
    endscript
}

手动执行一次:

logrotate -f /etc/logrotate.d/httpd

查看状态:

cat /var/lib/logrotate/logrotate.status

✅ 优点:

  • 自动轮转
  • 防止日志过大
  • 可保留 N 天

五、远程备份(可选)

如果需要备份到远程服务器:

rsync -avz /backup/httpd/ user@backup-server:/data/httpd_logs/

或打包后 scp:

tar czf httpd_logs.tar.gz /backup/httpd
scp httpd_logs.tar.gz user@remote:/backup/

六、清理旧备份(防止占满磁盘)

在备份脚本中加:

find /backup/httpd -type f -mtime +30 -delete

如果你愿意,我可以:

  • 给你一套生产环境完整备份方案
  • 或根据你的 Apache 版本 / CentOS 版本 定制配置

你用的是 CentOS 几?Apache 是哪个版本?

0 踩