温馨提示×

Linux怎么备份Nodejs日志

小樊
35
2026-07-07 10:14:11
栏目: 编程语言

在 Linux 上备份 Node.js 日志,常见做法取决于日志的存储方式(文件、stdout、systemd、Docker 等)。下面按最常见场景给你一套实用方案


一、Node.js 日志常见形式

  1. 日志文件(最常见)
    • 例如:/var/log/myapp/app.log
  2. systemd 日志
    • Node 服务由 systemd 管理,日志在 journalctl
  3. Docker 容器日志
  4. PM2 管理的日志

二、最常用方案:直接备份日志文件 ✅

1️⃣ 手动备份(一次性)

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

或打包:

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

2️⃣ 自动定时备份(推荐)

使用 cron

编辑定时任务:

crontab -e

每天凌晨 2 点备份:

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

% 在 cron 中需要转义


三、日志轮转(非常重要)⚠️

不要只备份,不轮转日志,否则日志会无限变大。

使用 logrotate(强烈推荐)

示例配置

sudo vim /etc/logrotate.d/nodeapp
/var/log/myapp/*.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
    copytruncate
}

✅ 含义:

  • daily:每天轮转
  • rotate 30:保留 30 天
  • compress:压缩旧日志
  • copytruncate:不重启 Node 也能生效

四、Node.js 输出到 stdout(如 PM2 / Docker)

1️⃣ PM2 日志

PM2 默认日志位置:

~/.pm2/logs/

备份:

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

✅ 建议配合 PM2 的日志轮转模块:

pm2 install pm2-logrotate

2️⃣ systemd 日志

查看日志:

journalctl -u mynodeapp > /backup/node-$(date +%F).log

或导出为结构化格式:

journalctl -u mynodeapp -o json > /backup/node.json

3️⃣ Docker 日志

Docker 默认位置:

/var/lib/docker/containers/

查看:

docker logs 容器名 > /backup/container.log

✅ 生产环境建议:

  • 使用 json-file + logrotate
  • 或接入 ELK / Loki

五、备份到远程服务器(进阶)

使用 rsync

rsync -avz /var/log/myapp/ user@backup-server:/backup/node-logs/

六、推荐最佳实践 ✅

项目 建议
日志方式 文件 + logrotate
日志级别 info / warn / error 分开
备份方式 cron + rsync
保留时间 30~90 天
容器环境 输出到 stdout + 日志采集

七、我可以帮你定制方案

你可以告诉我:

  1. Node.js 是 直接运行 / PM2 / Docker / systemd
  2. 日志文件在哪?
  3. 是否需要 自动清理旧日志

我可以直接给你一套可复制粘贴的完整配置

0