在 CentOS 上备份 Apache 日志,常见做法有 手动备份、脚本+定时任务、使用 logrotate 几种方式。下面按实用程度给你说明。
CentOS 上常见路径:
/var/log/httpd/access_log
/var/log/httpd/error_log
(如果是编译安装,可能在 /usr/local/apache/logs/)
查看配置确认:
grep -i "log" /etc/httpd/conf/httpd.conf
cp -a /var/log/httpd /backup/httpd_logs_$(date +%F)
或打包:
tar czf /backup/httpd_logs_$(date +%F).tar.gz /var/log/httpd
vim /root/backup_httpd_logs.sh
内容示例:
#!/bin/bash
BACKUP_DIR=/backup/httpd
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
tar czf $BACKUP_DIR/httpd_logs_$DATE.tar.gz /var/log/httpd
# 保留30天
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
chmod +x /root/backup_httpd_logs.sh
crontab -e
每天凌晨 2 点备份:
0 2 * * * /root/backup_httpd_logs.sh
CentOS 默认已用 logrotate 管理 Apache 日志。
配置文件:
/etc/logrotate.d/httpd
示例(系统通常已有):
/var/log/httpd/*log {
daily
missingok
rotate 30
compress
delaycompress
sharedscripts
postrotate
systemctl reload httpd > /dev/null 2>&1 || true
endscript
}
手动测试:
logrotate -d /etc/logrotate.d/httpd # 测试
logrotate -f /etc/logrotate.d/httpd # 强制执行
例如 rsync 到备份服务器:
rsync -az /var/log/httpd backup@192.168.1.100:/backup/
cp 或 tarlogrotate + 定时脚本如果你告诉我:
我可以给你更精确的配置。