温馨提示×

linux怎么备份nginx日志

小樊
37
2026-09-20 21:58:27
栏目: 智能运维

在 Linux 下备份 Nginx 日志,常见做法有手动备份、脚本+定时任务、logrotate几种方式。下面按实用程度给你说明。


一、Nginx 日志默认位置

通常位于:

/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 不会清空原日志,日志会继续增大。


三、备份并切割(推荐做法)

1. 备份后清空日志(不中断 Nginx)

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

四、使用 logrotate(最规范 ✅)

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   # 强制执行

✅ 优点:自动按天/大小切割、压缩、保留历史


五、定时自动备份(cron)

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 或备份脚本。

0 踩