手动备份
~/.pm2/logs/、/var/log/nodeapp/ 或自定义路径)。tar 命令压缩备份:tar -czvf /path/to/backup/logs_backup_$(date +%Y%m%d).tar.gz /path/to/logs/
定时任务备份
backup_logs.sh:#!/bin/bash
LOG_DIR="/path/to/logs"
BACKUP_DIR="/path/to/backup"
TIMESTAMP=$(date +%Y%m%d)
mkdir -p "$BACKUP_DIR"
tar -czvf "$BACKUP_DIR/logs_$TIMESTAMP.tar.gz" "$LOG_DIR"
cron 定时任务(如每天凌晨2点执行):crontab -e
# 添加行:0 2 * * * /path/to/backup_logs.sh
工具自动备份
logrotate(系统自带):
/etc/logrotate.d/nodeapp:/path/to/logs/*.log {
daily
rotate 7
compress
missingok
create 0640 root root
}
sudo logrotate -vf /etc/logrotate.d/nodeapp。pm2 内置日志管理(需配合 pm2-logrotate 模块)。直接还原
tar -xzvf /path/to/backup/logs_backup_YYYYMMDD.tar.gz -C /path/to/logs/
node app.js 或 pm2 restart <app_name>。工具恢复
logrotate,可通过配置 postrotate 脚本自动重启服务。journalctl)可通过时间戳筛选恢复:journalctl -u my-nodejs-app --since "2025-01-01" --until "2025-01-02" > /path/to/logs/app.log