Debian Node.js 日志备份实用方案
一 前置准备与日志定位
二 本地轮转与压缩备份 logrotate
/var/log/nodejs/*.log /var/log/myapp.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
sharedscripts
postrotate
# 若应用由 systemd 托管,推荐用 systemctl reload 触发重开文件句柄
systemctl reload nodejs-app.service >/dev/null 2>&1 || true
# 如以 PID 文件管理,可用:kill -USR1 $(cat /var/run/nodejs.pid 2>/dev/null) || true
endscript
}
三 归档与远程备份脚本化
#!/usr/bin/env bash
set -Eeuo pipefail
LOG_SRC="/var/log/nodejs"
BACKUP_BASE="/backup/nodejs-logs"
DATE=$(date +%Y%m%d)
mkdir -p "$BACKUP_BASE/$DATE"
tar -czf "$BACKUP_BASE/$DATE/nodejs-$DATE.tar.gz" -C "$LOG_SRC" .
# 可选:归档后清空原日志(确保应用支持日志轮转或已 reload)
# find "$LOG_SRC" -name "*.gz" -mtime +7 -delete
#!/usr/bin/env bash
set -Eeuo pipefail
BACKUP_DIR="/backup/nodejs-logs/$(date +%Y%m%d)"
REMOTE_USER="backup"
REMOTE_HOST="192.0.2.10"
REMOTE_DIR="/data/backups/nodejs"
mkdir -p "$BACKUP_DIR"
rsync -avz --delete "$BACKUP_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
duplicity --full-if-older-than 7D /var/log/nodejs/ file:///backup/duplicity/nodejs
四 集中式日志与长期保留建议
五 验证与运维要点