linux

nginx日志备份与恢复策略

小樊
42
2025-08-24 13:30:58
栏目: 编程语言

一、备份策略

  1. logrotate工具

    • 通过配置/etc/logrotate.d/nginx实现日志自动轮转、压缩和删除,如每天轮转、保留14天日志、压缩旧日志。
    • 示例配置:
      /var/log/nginx/*.log {
          daily
          rotate 14
          compress
          missingok
          create 0640 nginx nginx
          postrotate
              kill -USR1 `cat /var/run/nginx.pid`
          endscript
      }
      
  2. 脚本+定时任务

    • 编写Shell脚本备份日志到指定目录,结合cron定时执行,支持按日期命名备份文件。
    • 示例脚本:
      #!/bin/bash
      LOG_PATH="/var/log/nginx"
      BACKUP_PATH="/data/nginx_backup/$(date -d "yesterday" +%F)"
      mkdir -p $BACKUP_PATH
      tar -czvf $BACKUP_PATH/access_$(date -d "yesterday" +%F).tar.gz $LOG_PATH/access.log
      
  3. 实时同步备份

    • 使用rsyncscp将日志实时同步到远程服务器,避免单点故障。

二、恢复策略

  1. 误删恢复(文件未彻底清除)

    • 通过lsof命令查找被删除但仍被Nginx进程占用的日志文件描述符,从/proc目录复制回原路径,然后重启Nginx重新打开日志文件。
    • 操作步骤:
      lsof | grep deleted  # 查找被删除的文件描述符
      cp /proc/<PID>/fd/<FD> /var/log/nginx/access.log  # 复制文件
      nginx -s reopen  # 重新加载日志文件
      
  2. 从备份恢复

    • 将备份的压缩包解压到原日志路径,重启Nginx即可。
    • 示例命令:
      tar -xzvf /backup/access_20250820.tar.gz -C /var/log/nginx/
      nginx -s reopen
      
  3. 日志损坏恢复

    • 若日志文件部分损坏,可通过dd命令尝试修复,或从完整备份中恢复。

三、注意事项

参考来源:

0
看了该问题的人还看了