在 Debian 系统上备份 Node.js 日志,通常取决于日志的存储方式(文件、systemd、docker、PM2 等)。下面按常见场景给你一套实用、可落地的方案。
| 场景 | 常见路径 |
|---|---|
| 应用直接写文件 | /var/log/myapp/ |
| PM2 | ~/.pm2/logs/ |
| systemd | journalctl |
| Docker | docker logs 或 volume |
先确认你的 Node.js 是用什么方式运行的:
ps aux | grep node
cp /var/log/myapp/app.log /backup/app-$(date +%F).log
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
sudo crontab -e
0 2 * * * /usr/local/bin/backup-node-logs.sh
这是 Debian 官方推荐的日志管理方式。
sudo apt install logrotate
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
}
✅ 效果:
~/.pm2/logs/
tar czf /backup/pm2-logs-$(date +%F).tar.gz ~/.pm2/logs/
pm2 install pm2-logrotate
配置:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
journalctl -u myapp.service
journalctl -u myapp.service > /backup/myapp-$(date +%F).log
journalctl --vacuum-time=7d
docker logs mynode > /backup/node-$(date +%F).log
volumes:
- ./logs:/usr/src/app/logs
然后按 文件日志方式备份即可。
| 场景 | 推荐方案 |
|---|---|
| 文件日志 | logrotate |
| PM2 | pm2-logrotate |
| systemd | journalctl |
| 自动备份 | cron + tar |
| 长期归档 | 同步到对象存储(S3 / OSS) |
你可以直接告诉我:
我可以给你一份完全贴合你服务器的配置。