Ubuntu JS日志备份实用方案
一 定位日志路径与准备
ls /var/logsudo find /var/log -type f -name "*.log" | grep -i nodesudo mkdir -p /backup/nodejs-logs && sudo chown $USER:$USER /backup/nodejs-logs二 方法一 使用 logrotate 做本地轮转与保留(推荐)
sudo apt-get update && sudo apt-get install logrotatesudo nano /etc/logrotate.d/nodejs/var/log/nodejs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
copytruncate
dateext
}
sudo logrotate -d /etc/logrotate.confsudo logrotate -f /etc/logrotate.conf三 方法二 手动打包压缩与定时备份(tar + cron)
/usr/local/bin/backup-node-logs.sh#!/bin/bash
set -e
LOG_DIR="/var/log/nodejs"
BACKUP_DIR="/backup/nodejs-logs"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
mkdir -p "$BACKUP_DIR"
tar -czvf "$BACKUP_DIR/nodejs-$TIMESTAMP.tar.gz" -C "$LOG_DIR" .
# 可选:仅保留最近 N 天
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete
sudo chmod +x /usr/local/bin/backup-node-logs.shcrontab -e0 2 * * * /usr/local/bin/backup-node-logs.sh >> /var/log/backup-node-logs.log 2>&1
四 方法三 远程备份与多副本(rsync + 可选 rsnapshot)
rsync -avz --delete /var/log/nodejs/ user@remote:/backup/nodejs-logs/
0 0 * * * rsync -avz --delete /var/log/nodejs/ user@remote:/backup/nodejs-logs/sudo apt-get install rsnapshot/etc/rsnapshot.conf(示例片段):snapshot_root /backup/rsnapshot
link_dest 1
verbose 1
loglevel 1
logfile /var/log/rsnapshot.log
backup /var/log/nodejs/ nodejs/
0 2 * * * /usr/bin/rsnapshot daily五 方法四 若使用 PM2 的日志轮转
pm2 install pm2-logrotatepm2 set pm2-logrotate:max_size 100Mpm2 set pm2-logrotate:retain 30pm2 set pm2-logrotate:compress true六 恢复与校验及注意事项
sudo tar -xzvf /backup/nodejs-logs/nodejs-2025-08-01.tar.gz -C /var/log/nodejssudo rsync -aAXv /backup/nodejs-logs/ /var/log/nodejs/tar -tzvf file.tar.gz 或 zcat file.log.gz | headfind /backup -name "*.tar.gz" -mtime +30 -delete