Ubuntu Node.js日志备份与恢复方法是什么

备份方法

  1. 使用logrotate工具

    • 安装:sudo apt-get install logrotate
    • 配置:编辑/etc/logrotate.d/nodejs-logs,添加以下内容:
      /path/to/nodejs/logs/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        postrotate
          /usr/sbin/killall -HUP node
        endscript
      }
      
    • 测试并加载配置:sudo logrotate -d /etc/logrotate.d/nodejs-logs && sudo logrotate -f /etc/logrotate.d/nodejs-logs
  2. 编写Shell脚本+定时任务

    • 脚本示例(backup_logs.sh):
      #!/bin/bash
      LOG_DIR="/path/to/logs"
      BACKUP_DIR="/path/to/backup"
      DATE=$(date +%Y%m%d)
      mkdir -p "$BACKUP_DIR/$DATE"
      tar -czvf "$BACKUP_DIR/$DATE/logs.tar.gz" -C "$LOG_DIR" .
      
    • 赋予权限并添加定时任务(如每天凌晨2点执行):
      chmod +x backup_logs.sh
      crontab -e → 添加 0 2 * * * /path/to/backup_logs.sh
  3. 使用Node.js脚本

    • 编写脚本(backup-logs.js):
      const fs = require('fs');
      const path = require('path');
      const { exec } = require('child_process');
      const logDir = '/path/to/logs';
      const backupDir = '/path/to/backup';
      const date = new Date().toISOString().replace(/[:.]/g, '-');
      exec(`cp ${logDir}/*.log ${backupDir}/${date} && tar -czvf ${backupDir}/${date}.tar.gz -C ${backupDir} ${date}`, (err) => {
        if (err) console.error('备份失败:', err);
        else console.log('备份成功');
      });
      
    • 通过crontab定时执行:0 2 * * * /usr/bin/node /path/to/backup-logs.js

恢复方法

  1. 解压备份文件
    使用tar命令解压至原日志路径:
    tar -xzvf /path/to/backup/logs.tar.gz -C /path/to/logs

  2. 使用备份工具同步
    若为远程备份,可通过rsync恢复:
    rsync -avz /path/to/backup/logs/ user@remote:/path/to/logs/

  3. 借助第三方工具
    若使用ELK Stack等集中式日志管理工具,可通过其恢复功能获取历史日志。

注意事项

  • 定期检查备份文件完整性和存储空间。
  • 敏感日志需加密存储或限制访问权限。
  • 生产环境建议结合日志轮转(如logrotate)和远程备份,避免本地单点故障。

参考来源:[1,2,3,4,9,10,11,12,14]