温馨提示×

Debian Nginx日志怎样备份

小樊
36
2026-09-16 11:44:02
栏目: 智能运维

在 Debian 上备份 Nginx 日志,常见做法有手动备份、脚本+定时任务、logrotate、远程备份几种。下面按实用程度给你一套方案。


一、Nginx 日志位置(Debian 默认)

/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

三、推荐:用 logrotate(Debian 默认已集成)

1. 查看现有配置

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
}

2. 手动测试

logrotate -d /etc/logrotate.d/nginx   # 测试
logrotate -f /etc/logrotate.d/nginx  # 强制执行

✅ 优点:自动轮转、压缩、清理旧日志


四、自动备份到本地目录(脚本 + cron)

1. 备份脚本

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

2. 添加定时任务

crontab -e

每天凌晨 1 点:

0 1 * * * /usr/local/bin/backup_nginx_logs.sh

五、远程备份(更安全)

示例:rsync 到备份服务器

rsync -avz /backup/nginx/ user@backup-server:/data/nginx-logs/

可放入 cron 或脚本中。


六、重要提醒(避免坑)

  • 不要直接 mv 日志文件,要用 kill -USR1 让 Nginx 重新打开日志
  • 日志量大时务必开启 compress
  • 备份目录权限要安全(建议 700)

七、推荐组合方案

✅ 生产环境最佳:

logrotate(自动轮转)
+ 每日脚本备份到 /backup
+ 每周 rsync 到远程

如果你愿意,我可以:

  • 帮你写一套 完整备份脚本
  • 或按 Docker / 系统规模 给你定制方案

0 踩