在 Debian 上备份 Node.js 日志,常见做法取决于日志的存储方式(文件、systemd、Docker、PM2 等)。下面给你几种最常用、可落地的方案,从简单到规范。
通常是:
/var/log/myapp/
/opt/myapp/logs/
~/myapp/logs/
例如:
ls /var/log/myapp/
cp -r /var/log/myapp /backup/myapp-logs-$(date +%F)
或打包:
tar czf myapp-logs-$(date +%F).tar.gz /var/log/myapp
sudo nano /usr/local/bin/backup-node-logs.sh
内容:
#!/bin/bash
SRC="/var/log/myapp"
DEST="/backup/myapp-logs-$(date +%F).tar.gz"
mkdir -p /backup
tar czf "$DEST" "$SRC"
赋予执行权限:
chmod +x /usr/local/bin/backup-node-logs.sh
sudo crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/local/bin/backup-node-logs.sh
适合长期运行、自动轮转和备份
sudo apt install logrotate
sudo nano /etc/logrotate.d/myapp
示例配置:
/var/log/myapp/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
copytruncate
}
含义:
sudo logrotate -d /etc/logrotate.d/myapp
~/.pm2/logs/
tar czf pm2-logs-$(date +%F).tar.gz ~/.pm2/logs
pm2 install pm2-logrotate
配置:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
journalctl -u myapp.service
journalctl -u myapp.service > myapp-$(date +%F).log
或长期保存:
sudo journalctl --vacuum-time=30d
docker logs my_container > myapp.log
-v /host/logs:/app/logs
json-file + logrotate| 场景 | 推荐方案 |
|---|---|
| 普通 Node 项目 | logrotate |
| PM2 | pm2-logrotate |
| systemd | journalctl |
| Docker | volume + 宿主机 logrotate |
| 云服务器 | 日志 + 对象存储(S3/OSS) |
你可以告诉我:
我可以直接给你可用的配置文件和脚本。