ubuntu

Ubuntu Node.js日志如何备份与恢复

小樊
53
2025-08-17 01:58:47
栏目: 编程语言

备份方法

  1. 手动备份

    • 找到日志文件路径(如 ~/.pm2/logs//var/log/nodeapp/ 或自定义路径)。
    • 使用 tar 命令压缩备份:
      tar -czvf /path/to/backup/logs_backup_$(date +%Y%m%d).tar.gz /path/to/logs/
      
  2. 定时任务备份

    • 编写脚本 backup_logs.sh
      #!/bin/bash
      LOG_DIR="/path/to/logs"
      BACKUP_DIR="/path/to/backup"
      TIMESTAMP=$(date +%Y%m%d)
      mkdir -p "$BACKUP_DIR"
      tar -czvf "$BACKUP_DIR/logs_$TIMESTAMP.tar.gz" "$LOG_DIR"
      
    • 添加 cron 定时任务(如每天凌晨2点执行):
      crontab -e
      # 添加行:0 2 * * * /path/to/backup_logs.sh
      
  3. 工具自动备份

    • 使用 logrotate(系统自带):
      • 创建配置文件 /etc/logrotate.d/nodeapp
        /path/to/logs/*.log {
            daily
            rotate 7
            compress
            missingok
            create 0640 root root
        }
        
      • 手动测试:sudo logrotate -vf /etc/logrotate.d/nodeapp
    • 使用 pm2 内置日志管理(需配合 pm2-logrotate 模块)。

恢复方法

  1. 直接还原

    • 停止 Node.js 应用(避免日志冲突)。
    • 解压备份文件到原路径:
      tar -xzvf /path/to/backup/logs_backup_YYYYMMDD.tar.gz -C /path/to/logs/
      
    • 重启应用:node app.jspm2 restart <app_name>
  2. 工具恢复

    • 若使用 logrotate,可通过配置 postrotate 脚本自动重启服务。
    • 系统级日志(如 journalctl)可通过时间戳筛选恢复:
      journalctl -u my-nodejs-app --since "2025-01-01" --until "2025-01-02" > /path/to/logs/app.log
      

注意事项

0
看了该问题的人还看了