温馨提示×

怎样备份linux nginx日志

小樊
42
2026-09-14 18:21:39
栏目: 智能运维

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


一、先确认 Nginx 日志位置

一般默认在:

/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

三、推荐:脚本 + crontab 定时备份

1. 编写备份脚本

#!/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

2. 加入定时任务

crontab -e

每天凌晨 0 点备份:

0 0 * * * /usr/local/bin/nginx_log_backup.sh

四、更专业:用 logrotate(强烈推荐)

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/

六、常见注意事项

  1. 不要直接 mv 日志,会导致 Nginx 继续写旧文件
  2. 备份后建议 reload nginx
  3. 磁盘空间要监控
  4. 生产环境优先用 logrotate

如果你告诉我:

  • 用的 系统(CentOS / Ubuntu)
  • 是否 Docker / K8s
  • 日志量大小

我可以给你更精准的备份方案。

0 踩