debian

Debian Nginx日志备份与恢复策略

小樊
35
2025-08-13 14:47:30
栏目: 智能运维

一、备份策略

  1. 自动备份(推荐)

    • logrotate工具
      配置/etc/logrotate.d/nginx,设置每日轮转、保留7天压缩日志,自动触发(依赖cron)。
      示例配置:
      /var/log/nginx/*.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
          create 0640 nginx nginx
          postrotate
              if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid`; fi
          endscript
      }
      
    • Shell脚本+定时任务
      编写脚本备份日志到指定目录,结合crontab定时执行(如每天凌晨2点),可压缩备份并删除旧文件。
      示例脚本:
      #!/bin/bash
      BACKUP_DIR="/backup/nginx/logs"
      DATE=$(date +%Y%m%d)
      mkdir -p $BACKUP_DIR
      tar -czvf $BACKUP_DIR/access_$DATE.tar.gz /var/log/nginx/access.log
      tar -czvf $BACKUP_DIR/error_$DATE.tar.gz /var/log/nginx/error.log
      find $BACKUP_DIR -type f -mtime +7 -exec rm {} \;
      
  2. 手动备份

    • 使用tar命令临时备份:
      sudo tar -czvf nginx_logs_backup.tar.gz /var/log/nginx/

二、恢复策略

  1. 从备份文件恢复

    • 解压备份文件到原路径:
      sudo tar -xzvf nginx_logs_backup.tar.gz -C /var/log/nginx/
    • 若为logrotate备份,直接触发轮转即可自动恢复。
  2. 误删日志恢复(未重启Nginx)

    • lsof找回被删除文件描述符:
      sudo lsof | grep deleted,找到Nginx进程持有的日志文件描述符。
      /proc/<PID>/fd/复制文件内容到原路径,重建日志文件后重启Nginx:
      sudo cp /proc/<PID>/fd/5 /var/log/nginx/access.log
      sudo chown nginx:nginx /var/log/nginx/access.log
      sudo nginx -s reopen
      

三、注意事项

参考来源:

0
看了该问题的人还看了