在 Linux 下备份 Nginx 日志,常见做法有手动备份、脚本+定时任务、logrotate 配合备份等方式。下面按实用程度给你讲几种方法。
一般默认在:
/var/log/nginx/access.log
/var/log/nginx/error.log
也可在 Nginx 配置中查看:
nginx -T | grep -i 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
#!/bin/bash
BACKUP_DIR=/backup/nginx
DATE=$(date +%F)
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
保存为:
/usr/local/bin/nginx_log_backup.sh
chmod +x /usr/local/bin/nginx_log_backup.sh
crontab -e
每天凌晨 0 点备份:
0 0 * * * /usr/local/bin/nginx_log_backup.sh
Nginx 日志通常已经由 logrotate 管理,你可以直接扩展它。
cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1
endscript
}
说明:
daily:每天轮转rotate 30:保留 30 天compress:压缩旧日志postrotate:重载 Nginx,避免日志写错文件logrotate -f /etc/logrotate.d/nginx
如果需要备份到远程服务器:
rsync -avz /backup/nginx/ user@backup-server:/data/nginx_logs/
如果你告诉我:
我可以给你更精准的备份方案。