在 CentOS 上备份 Apache 日志,常见做法有手动备份、脚本+定时任务、logrotate 配合归档几种方式。下面按实用程度给你说明。
默认路径一般是:
/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
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
chmod +x /usr/local/bin/backup_httpd_logs.sh
crontab -e
每天凌晨 1 点备份:
0 1 * * * /usr/local/bin/backup_httpd_logs.sh
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/
如果你愿意,我可以: