首页主机资讯Ubuntu上Node.js日志备份方法

Ubuntu上Node.js日志备份方法

时间2025-10-11 21:21:03发布访客分类主机资讯浏览429
导读:Ubuntu上Node.js日志备份的常见方法 1. 使用logrotate工具(系统级自动化轮转) logrotate是Ubuntu系统自带的日志管理工具,可自动完成Node.js日志的轮转、压缩、删除及保留策略配置。 安装logrot...

Ubuntu上Node.js日志备份的常见方法

1. 使用logrotate工具(系统级自动化轮转)

logrotate是Ubuntu系统自带的日志管理工具,可自动完成Node.js日志的轮转、压缩、删除及保留策略配置。

  • 安装logrotate(若未安装):sudo apt update & & sudo apt install logrotate
  • 创建自定义配置文件:在/etc/logrotate.d/目录下新建文件(如nodejs_app),内容示例如下(需替换为实际日志路径):
    /var/log/nodejs/*.log {
        
        daily               # 每天轮转
        rotate 7            # 保留最近7份日志
        compress            # 压缩旧日志(如.gz格式)
        missingok           # 若日志文件不存在也不报错
        notifempty          # 若日志为空则不轮转
        create 0640 root adm # 创建新日志文件并设置权限
        sharedscripts       # 所有日志处理完成后统一执行postrotate
        postrotate
            /bin/kill -HUP $(cat /var/run/nodejs.pid 2>
        /dev/null) 2>
    /dev/null || true # 重启Node.js进程以重新打开日志文件(需替换为实际PID文件路径)
        endscript
    }
        
    
  • 手动测试配置sudo logrotate -vf /etc/logrotate.d/nodejs_app-v显示详细过程,-f强制立即轮转)
  • 自动运行:logrotate默认通过/etc/cron.daily/logrotate定时任务每天执行,无需额外配置。

2. 使用rsync命令(增量同步备份)

rsync是高效的文件同步工具,适合将Node.js日志同步到本地其他目录或远程服务器,支持增量备份(仅传输变化的部分)。

  • 本地备份(同步到/backup/logs目录):
    rsync -av --delete /var/log/nodejs/ /backup/logs/
    
    参数说明:-a(归档模式,保留文件属性)、-v(详细输出)、--delete(删除目标目录中源目录不存在的文件,保持一致性)。
  • 远程备份(同步到远程服务器的/remote/logs目录):
    rsync -avz -e ssh /var/log/nodejs/ user@remote-server:/remote/logs/
    
    参数说明:-z(压缩传输)、-e ssh(通过SSH加密传输)。
  • 自动化:将rsync命令写入shell脚本(如sync_logs.sh),并通过cron定时执行(如每天凌晨2点):
    crontab -e
    
    添加以下内容:0 2 * * * /path/to/sync_logs.sh

3. 使用tar命令(压缩打包备份)

tar命令可将Node.js日志打包成压缩文件(如.tar.gz),适合一次性完整备份。

  • 备份命令(将/var/log/nodejs/目录下的所有.log文件打包到/backup/logs):
    tar -czvf /backup/logs/logs_backup_$(date +%Y%m%d_%H%M%S).tar.gz -C /var/log/nodejs .
    
    参数说明:-c(创建新压缩包)、-z(gzip压缩)、-v(详细输出)、-f(指定文件名)、-C(切换到指定目录)。
  • 自动化:将上述命令写入shell脚本(如backup_logs.sh),并通过cron定时执行(如每周日凌晨3点):
    crontab -e
    
    添加以下内容:0 3 * * 0 /path/to/backup_logs.sh

4. 使用Node.js脚本(自定义备份逻辑)

通过Node.js编写脚本,可实现更灵活的备份逻辑(如按日期分割、上传到云存储),适合需要定制化需求的场景。

  • 示例脚本backup-logs.js):
    const fs = require('fs');
        
    const path = require('path');
        
    
    // 配置日志路径和备份目录
    const logFilePath = '/var/log/nodejs/app.log';
        
    const backupDir = '/backup/logs';
    
    
    // 创建备份目录(若不存在)
    if (!fs.existsSync(backupDir)) {
    
      fs.mkdirSync(backupDir, {
     recursive: true }
        );
    
    }
        
    
    // 生成带时间戳的备份文件名
    const timestamp = new Date().toISOString().slice(0, 10);
    
    const destPath = path.join(backupDir, `app_${
    timestamp}
        .log`);
        
    
    // 复制日志文件
    const readStream = fs.createReadStream(logFilePath);
        
    const writeStream = fs.createWriteStream(destPath);
        
    
    readStream.on('error', (err) =>
         console.error('读取日志失败:', err));
        
    writeStream.on('error', (err) =>
         console.error('写入备份失败:', err));
        
    writeStream.on('finish', () =>
         console.log('备份成功:', destPath));
        
    
    readStream.pipe(writeStream);
    
    
  • 定时执行:通过cron调用该脚本(如每天凌晨1点):
    crontab -e
    
    添加以下内容:0 1 * * * /usr/bin/node /path/to/backup-logs.js

5. 结合PM2管理(进程级日志备份)

若使用PM2管理Node.js应用,其日志默认存储在~/.pm2/logs/目录下(格式为app-name-out.logapp-name-err.log),可通过以下方式备份:

  • 备份PM2日志:使用rsync或tar命令备份~/.pm2/logs/目录,示例如下:
    rsync -av ~/.pm2/logs/ /backup/pm2_logs/
    
  • 自动清理旧日志:通过PM2的logs命令清理旧日志(如保留最近7天的日志):
    pm2 flush
    
    或编写脚本定期删除旧日志文件(如超过7天的文件):
    find ~/.pm2/logs/ -type f -name "*.log" -mtime +7 -exec rm {
    }
         \;
        
    
  • 自动化:将上述命令加入cron定时任务(如每天凌晨清理)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上Node.js日志备份方法
本文地址: https://pptw.com/jishu/724013.html
怎样利用Ubuntu JS日志进行安全审计 Node.js日志在Ubuntu上的压缩技巧

游客 回复需填写必要信息