linux

Linux下Node.js日志备份方法是什么

小樊
42
2025-12-29 00:16:22
栏目: 编程语言

Linux下Node.js日志备份方法

一 核心思路与准备

二 方法一 使用 logrotate 做日志轮转与本地归档

/var/log/nodejs/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  create 0640 node node
  sharedscripts
  postrotate
    # 根据进程管理方式选择其一
    systemctl reload my-nodejs.service >/dev/null 2>&1 || true
    # 或 kill -USR1 $(cat /var/run/nodejs.pid) 2>/dev/null || true
  endscript
}

三 方法二 使用 Shell 脚本配合 tar rsync 做周期性备份

#!/bin/bash
set -e
LOG_DIR="/var/log/nodejs"
BACKUP_DIR="/backup/nodejs"
DATE=$(date +%Y%m%d)

mkdir -p "$BACKUP_DIR/$DATE"
tar -czf "$BACKUP_DIR/$DATE/app-$DATE.tar.gz" -C "$LOG_DIR" .
# 可选:加密
# gpg --symmetric --cipher-algo AES256 "$BACKUP_DIR/$DATE/app-$DATE.tar.gz"

# 清理30天前备份
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +30 -delete
#!/bin/bash
BACKUP_DIR="/backup/nodejs"
REMOTE_USER="backup"
REMOTE_IP="192.168.1.100"
REMOTE_DIR="/remote/backup/nodejs"

rsync -avz --delete "$BACKUP_DIR/" "$REMOTE_USER@$REMOTE_IP:$REMOTE_DIR"
# 每天 02:00 本地打包
0 2 * * * /usr/local/bin/backup_logs.sh
# 每天 03:00 远程同步
0 3 * * * /usr/local/bin/backup_logs_remote.sh

四 方法三 应用内轮转与集中式日志

const winston = require('winston');
const { DailyRotateFile } = require('winston-daily-rotate-file');

const logger = winston.createLogger({
  transports: [
    new DailyRotateFile({
      filename: '/var/log/nodejs/app-%DATE%.log',
      datePattern: 'YYYY-MM-DD',
      zippedArchive: true,
      maxSize: '20m',
      maxFiles: '14d'
    })
  ]
});

五 恢复与校验及注意事项

0
看了该问题的人还看了