温馨提示×

centos apache日志怎么备份

小樊
35
2026-10-23 16:37:23
栏目: 智能运维

在 CentOS 上备份 Apache 日志,常见做法有手动备份、脚本+定时任务、logrotate 配合归档几种方式。下面按实用程度给你说明。


一、Apache 日志位置(CentOS)

默认路径一般是:

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

如果你用的是虚拟主机,可能在:

/var/log/httpd/域名-access_log
/var/log/httpd/域名-error_log

二、简单手动备份(临时用)

cp -a /var/log/httpd /backup/httpd_logs_$(date +%F)

或压缩备份:

tar zcf /backup/httpd_logs_$(date +%F).tar.gz /var/log/httpd

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

1. 创建备份脚本

vi /usr/local/bin/backup_httpd_logs.sh

内容示例:

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

mkdir -p $BACKUP_DIR
tar zcf $BACKUP_DIR/httpd_logs_$DATE.tar.gz /var/log/httpd

# 保留30天
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

2. 赋权

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

3. 加入定时任务

crontab -e

每天凌晨 1 点备份:

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

四、使用 logrotate(最佳实践 ✅)

CentOS 默认已用 logrotate 管理 Apache 日志。

查看配置

cat /etc/logrotate.d/httpd

典型内容:

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

自定义备份(例如压缩后保留更久)

修改或新增:

/var/log/httpd/*log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 640 root root
    postrotate
        systemctl reload httpd >/dev/null 2>&1 || true
    endscript
}

测试:

logrotate -d /etc/logrotate.d/httpd   # 模拟
logrotate -f /etc/logrotate.d/httpd   # 强制执行

五、远程备份(可选)

比如备份到另一台服务器:

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

六、建议方案总结

  • 生产环境:logrotate + 定期 rsync
  • 简单需求:cron + tar
  • 审计需求:备份后只读归档(chmod 400)

如果你愿意,我可以:

  • 帮你写一套完整备份脚本
  • 或按你的 Apache 版本 / CentOS 版本细化配置

0 踩