温馨提示×

如何备份debian nodejs日志

小樊
36
2026-09-04 02:53:26
栏目: 编程语言

在 Debian 上备份 Node.js 日志,核心思路是找到日志文件位置 → 定期复制/压缩 → 可加轮转和自动任务。下面分几种常见情况说明。


一、确认 Node.js 日志在哪里

常见位置有:

  1. 应用自己写的日志文件

    /var/log/yourapp/
    /home/user/app/logs/
    ./logs/app.log
    
  2. PM2 管理的日志

    ~/.pm2/logs/
    /root/.pm2/logs/
    
  3. systemd 服务日志(推荐查看方式)

    journalctl -u yourapp.service
    
  4. Nginx / 反向代理日志(如果有)

    /var/log/nginx/
    

二、手动备份日志(最简单)

1. 复制日志文件

cp /var/log/yourapp/app.log /backup/app-log-$(date +%F).log

2. 压缩备份

tar czf /backup/nodejs-logs-$(date +%F).tar.gz /var/log/yourapp

三、使用 logrotate(推荐)

Debian 自带 logrotate,适合自动轮转 + 备份

示例配置

sudo nano /etc/logrotate.d/nodejs

内容示例:

/var/log/yourapp/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    copytruncate
}

说明:

  • copytruncate:不重启 Node.js 也能截断日志(很重要)
  • compress:自动 gzip
  • rotate 14:保留 14 天

测试:

sudo logrotate -d /etc/logrotate.d/nodejs

四、PM2 日志备份

查看日志位置

pm2 logs
pm2 info yourapp

备份 PM2 日志

tar czf pm2-logs-$(date +%F).tar.gz ~/.pm2/logs

PM2 自带日志分割(推荐)

pm2 install pm2-logrotate

配置示例:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30

五、自动定时备份(cron)

编辑定时任务

crontab -e

每天凌晨 2 点备份:

0 2 * * * tar czf /backup/nodejs-logs-$(date +\%F).tar.gz /var/log/yourapp

六、如果是 systemd 日志

不能直接复制文件,用导出方式:

journalctl -u yourapp.service > /backup/yourapp-$(date +%F).log

或二进制备份:

journalctl -u yourapp.service --output=export > /backup/yourapp.journal

七、备份建议

  • ✅ 日志和代码分开备份
  • ✅ 重要日志传到远程(rsync / S3)
  • ✅ 控制保留时间,避免磁盘爆满
  • ✅ Node.js 应用尽量用 winston / pino 写文件

如果你愿意,可以告诉我:

  • Node.js 是怎么运行的(PM2 / systemd / docker)
  • 日志路径
  • 是否需要远程备份

我可以给你一套可直接用的备份脚本

0