在 Debian 系统上备份 Apache 日志,常见做法有 手动备份、脚本+定时任务、logrotate 配合备份、远程备份 等。下面按常用程度给你说明。
默认路径通常是:
/var/log/apache2/
常见日志文件:
access.log —— 访问日志error.log —— 错误日志other_vhosts_access.log —— 虚拟主机日志sudo cp -r /var/log/apache2 /backup/apache2-logs-$(date +%F)
或打包:
sudo tar czf /backup/apache2-logs-$(date +%F).tar.gz /var/log/apache2
Debian 默认已启用 Apache 的 logrotate:
/etc/logrotate.d/apache2
示例配置(简化):
/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null 2>&1 || true
endscript
}
可以在 postrotate 中加备份命令:
postrotate
tar czf /backup/apache2-logs-$(date +%F).tar.gz /var/log/apache2/*.1
endscript
sudo nano /usr/local/bin/backup-apache-logs.sh
内容示例:
#!/bin/bash
BACKUP_DIR="/backup/apache2"
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
tar czf $BACKUP_DIR/apache2-logs-$DATE.tar.gz /var/log/apache2
# 保留 30 天
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
赋予执行权限:
sudo chmod +x /usr/local/bin/backup-apache-logs.sh
sudo crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/local/bin/backup-apache-logs.sh
rsync -avz /var/log/apache2/ user@backup-server:/backup/apache2/
可加入 cron:
0 3 * * * rsync -avz /var/log/apache2/ user@backup-server:/backup/apache2/
权限问题
root:admsudo避免备份正在写入的日志
logrotate.1 文件磁盘空间
如果你愿意,我可以:
你现在是个人服务器还是生产环境?