溫馨提示×

Ubuntu Node.js日志如何實現自動化備份

小樊
45
2025-09-26 20:12:31
欄目: 編程語言

Ubuntu下Node.js日志自動化備份的實現方法

1. 使用logrotate工具(系統原生推薦)

logrotate是Ubuntu系統自帶的日志管理工具,可自動完成日志的輪轉、壓縮、刪除及通知等操作,是Node.js日志自動化備份的首選方案。
配置步驟

  • 安裝logrotate(若未安裝):sudo apt install logrotate。
  • 創建自定義配置文件:在/etc/logrotate.d/目錄下新建文件(如nodejs_app),內容如下(根據實際路徑調整):
    /path/to/your/nodejs/app/logs/*.log {
        daily                # 每天輪轉
        rotate 7             # 保留最近7天的日志
        compress             # 壓縮舊日志(gzip格式)
        delaycompress        # 延遲壓縮(避免當天日志被立即壓縮)
        missingok            # 日志文件不存在時不報錯
        notifempty           # 日志為空時不輪轉
        create 0640 root adm # 創建新日志文件時設置權限
    }
    
  • 測試配置:手動觸發輪轉以驗證配置是否正確:sudo logrotate -vf /etc/logrotate.d/nodejs_app。
  • 自動運行:logrotate默認通過系統cron任務(/etc/cron.daily/logrotate)每日自動執行,無需額外配置。

2. 編寫Shell腳本+定時任務(靈活定制)

若需要更個性化的備份邏輯(如備份到遠程服務器、添加額外校驗),可通過Shell腳本結合cron定時任務實現。
操作步驟

  • 創建備份腳本(如/usr/local/bin/backup_nodejs_logs.sh):
    #!/bin/bash
    LOG_DIR="/path/to/your/nodejs/app/logs"          # 日志源目錄
    BACKUP_DIR="/path/to/backup/nodejs_logs"         # 備份目標目錄
    DATE=$(date +"%Y%m%d_%H%M%S")                    # 當前時間戳
    BACKUP_FILE="${BACKUP_DIR}/logs_backup_${DATE}.tar.gz"
    
    # 創建備份目錄(若不存在)
    mkdir -p "$BACKUP_DIR"
    
    # 壓縮日志文件
    tar -czf "$BACKUP_FILE" -C "$LOG_DIR" .
    
    # 刪除超過30天的舊備份(避免占用過多空間)
    find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +30 -exec rm {} \;
    
  • 賦予腳本執行權限chmod +x /usr/local/bin/backup_nodejs_logs.sh。
  • 設置cron定時任務:編輯當前用戶的crontab(crontab -e),添加以下內容(如每天凌晨2點執行):
    0 2 * * * /usr/local/bin/backup_nodejs_logs.sh >> /path/to/backup/logs/backup.log 2>&1
    
    此配置會將備份過程的輸出(包括錯誤信息)重定向到/path/to/backup/logs/backup.log,便于后續排查問題。

3. 結合PM2的日志管理(適用于PM2管理的應用)

若使用PM2進程管理器運行Node.js應用,PM2自帶日志管理功能,可通過pm2-logrotate模塊實現自動化備份。
配置步驟

  • 安裝pm2-logrotate模塊pm2 install pm2-logrotate。
  • 配置備份參數:通過pm2 set pm2-logrotate:<key> <value>設置(示例):
    pm2 set pm2-logrotate:max_size 10M     # 單個日志文件超過10MB時輪轉
    pm2 set pm2-logrotate:retain 7         # 保留最近7個備份
    pm2 set pm2-logrotate:compress true    # 壓縮舊日志
    pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss  # 備份文件名格式
    
  • 驗證配置:PM2會自動應用設置,日志文件默認存儲在~/.pm2/logs/目錄下,輪轉后的備份會自動保留。

4. 使用rsync同步到遠程服務器(異地容災)

若需要將日志備份到異地服務器(如云存儲),可使用rsync命令結合cron定時任務實現。
操作步驟

  • 確保遠程服務器已配置SSH免密登錄(避免每次輸入密碼):
    ssh-keygen -t rsa                  # 本地生成密鑰對
    ssh-copy-id user@remote-server     # 將公鑰復制到遠程服務器
    
  • 創建cron定時任務(編輯crontab -e):
    0 3 * * * rsync -avz --delete /path/to/your/nodejs/app/logs/ user@remote-server:/backup/nodejs_logs/
    
    此配置會每天凌晨3點將本地日志目錄同步到遠程服務器的/backup/nodejs_logs/目錄,--delete參數會刪除遠程服務器上已不存在的本地文件(保持同步)。

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