在 CentOS 上备份 Apache 日志,通常有手动备份、脚本+定时任务以及使用 logrotate几种方式。下面按常见场景给你说明。
默认路径一般为:
/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
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
crontab -e
每天凌晨 1 点备份:
0 1 * * * /usr/local/bin/backup_httpd_log.sh
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
✅ 优点:
如果需要备份到远程服务器:
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
如果你愿意,我可以:
你用的是 CentOS 几?Apache 是哪个版本?