温馨提示×

Debian Nodejs日志如何备份

小樊
45
2026-07-13 04:02:09
栏目: 编程语言

在 Debian 系统上备份 Node.js 日志,通常取决于日志的存储方式(文件、systemd、docker、PM2 等)。下面按常见场景给你一套实用、可落地的方案


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

1️⃣ 常见日志位置

场景 常见路径
应用直接写文件 /var/log/myapp/
PM2 ~/.pm2/logs/
systemd journalctl
Docker docker logs 或 volume

先确认你的 Node.js 是用什么方式运行的:

ps aux | grep node

二、最常用方案:文件日志备份(推荐)

✅ 1. 手动备份(一次性)

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

✅ 2. 自动备份(cron + tar)

创建备份脚本

sudo nano /usr/local/bin/backup-node-logs.sh

内容:

#!/bin/bash
DATE=$(date +%F)
SRC="/var/log/myapp"
DEST="/backup/node-logs"

mkdir -p $DEST
tar czf $DEST/node-logs-$DATE.tar.gz $SRC

赋予执行权限:

chmod +x /usr/local/bin/backup-node-logs.sh

加入 cron(每天凌晨 2 点)

sudo crontab -e
0 2 * * * /usr/local/bin/backup-node-logs.sh

三、使用 logrotate(强烈推荐 ✅)

这是 Debian 官方推荐的日志管理方式

1️⃣ 安装

sudo apt install logrotate

2️⃣ 配置 Node.js 日志轮转

sudo nano /etc/logrotate.d/node-app

示例配置:

/var/log/myapp/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    create 0640 www-data www-data
    postrotate
        systemctl reload myapp > /dev/null 2>&1 || true
    endscript
}

✅ 效果:

  • 每天轮转
  • 保留 14 天
  • 自动压缩
  • 防止日志无限增长

四、PM2 日志备份(非常常见)

1️⃣ PM2 日志位置

~/.pm2/logs/

2️⃣ 备份脚本

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

3️⃣ PM2 自带日志管理(推荐)

pm2 install pm2-logrotate

配置:

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

五、systemd 日志备份(journalctl)

查看日志

journalctl -u myapp.service

备份

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

自动清理

journalctl --vacuum-time=7d

六、Docker Node.js 日志备份

1️⃣ 查看日志

docker logs mynode > /backup/node-$(date +%F).log

2️⃣ 推荐方式(volume)

volumes:
  - ./logs:/usr/src/app/logs

然后按 文件日志方式备份即可。


七、推荐组合(生产环境 ✅)

场景 推荐方案
文件日志 logrotate
PM2 pm2-logrotate
systemd journalctl
自动备份 cron + tar
长期归档 同步到对象存储(S3 / OSS)

八、我可以帮你定制

你可以直接告诉我:

  1. Node.js 是 PM2 / systemd / Docker 哪种?
  2. 日志路径在哪?
  3. 本地备份 还是 远程备份

我可以给你一份完全贴合你服务器的配置

0