溫馨提示×

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
      

三、注意事項

  • 權限管理:確保備份目錄權限正確(如chown nginx:nginx),避免權限問題導致服務異常。
  • 存儲安全:定期清理舊備份,敏感日志可加密存儲,重要備份建議異地備份。
  • 監控驗證:通過cron日志或備份腳本輸出確認備份成功,可搭配監控工具(如Prometheus)告警備份失敗。

參考來源:

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女