在 Debian 上备份 Nginx 日志,常见做法有手动备份、脚本+定时任务、logrotate、远程备份几种。下面按实用程度给你一套方案。
/var/log/nginx/access.log
/var/log/nginx/error.log
cp /var/log/nginx/access.log /backup/nginx-access-$(date +%F).log
cp /var/log/nginx/error.log /backup/nginx-error-$(date +%F).log
cat /etc/logrotate.d/nginx
一般内容类似:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
logrotate -d /etc/logrotate.d/nginx # 测试
logrotate -f /etc/logrotate.d/nginx # 强制执行
✅ 优点:自动轮转、压缩、清理旧日志
vi /usr/local/bin/backup_nginx_logs.sh
内容:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR=/backup/nginx
mkdir -p $BACKUP_DIR
cp /var/log/nginx/access.log $BACKUP_DIR/access-$DATE.log
cp /var/log/nginx/error.log $BACKUP_DIR/error-$DATE.log
# 可选压缩
gzip $BACKUP_DIR/access-$DATE.log
gzip $BACKUP_DIR/error-$DATE.log
赋权:
chmod +x /usr/local/bin/backup_nginx_logs.sh
crontab -e
每天凌晨 1 点:
0 1 * * * /usr/local/bin/backup_nginx_logs.sh
rsync -avz /backup/nginx/ user@backup-server:/data/nginx-logs/
可放入 cron 或脚本中。
kill -USR1 让 Nginx 重新打开日志compress✅ 生产环境最佳:
logrotate(自动轮转)
+ 每日脚本备份到 /backup
+ 每周 rsync 到远程
如果你愿意,我可以: