在 Linux 下备份 Nginx 日志,常见做法有手动备份、脚本+定时任务、logrotate几种方式。下面按实用程度给你说明。
通常位于:
/var/log/nginx/access.log
/var/log/nginx/error.log
(具体以 nginx.conf 中 access_log / 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
⚠️ 注意:直接 cp 不会清空原日志,日志会继续增大。
cp /var/log/nginx/access.log /backup/nginx/access_$(date +%F).log
: > /var/log/nginx/access.log
或使用 Nginx 信号(更安全):
mv /var/log/nginx/access.log /backup/nginx/access_$(date +%F).log
nginx -s reopen
Nginx 通常已自带 logrotate 配置:
/etc/logrotate.d/nginx
示例配置:
/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
nginx -s reopen
endscript
}
手动测试:
logrotate -d /etc/logrotate.d/nginx # 测试
logrotate -f /etc/logrotate.d/nginx # 强制执行
✅ 优点:自动按天/大小切割、压缩、保留历史
crontab -e
每天凌晨 1 点备份:
0 1 * * * mv /var/log/nginx/access.log /backup/nginx/access_$(date +\%F).log && nginx -s reopen
rsync -avz /backup/nginx/ user@backup-server:/data/nginx-logs/
| 场景 | 推荐方式 |
|---|---|
| 个人/小服务器 | logrotate |
| 临时备份 | cp + nginx -s reopen |
| 生产环境 | logrotate + rsync |
如果你愿意,我可以根据你的 Nginx 配置直接帮你写一份 logrotate 或备份脚本。