备份方法
-
使用logrotate工具
- 安装:
sudo apt-get install logrotate - 配置:编辑
/etc/logrotate.d/nodejs-logs,添加以下内容:/path/to/nodejs/logs/*.log { daily rotate 7 compress missingok notifempty postrotate /usr/sbin/killall -HUP node endscript } - 测试并加载配置:
sudo logrotate -d /etc/logrotate.d/nodejs-logs&&sudo logrotate -f /etc/logrotate.d/nodejs-logs。
- 安装:
-
编写Shell脚本+定时任务
- 脚本示例(
backup_logs.sh):#!/bin/bash LOG_DIR="/path/to/logs" BACKUP_DIR="/path/to/backup" DATE=$(date +%Y%m%d) mkdir -p "$BACKUP_DIR/$DATE" tar -czvf "$BACKUP_DIR/$DATE/logs.tar.gz" -C "$LOG_DIR" . - 赋予权限并添加定时任务(如每天凌晨2点执行):
chmod +x backup_logs.sh
crontab -e→ 添加0 2 * * * /path/to/backup_logs.sh。
- 脚本示例(
-
使用Node.js脚本
- 编写脚本(
backup-logs.js):const fs = require('fs'); const path = require('path'); const { exec } = require('child_process'); const logDir = '/path/to/logs'; const backupDir = '/path/to/backup'; const date = new Date().toISOString().replace(/[:.]/g, '-'); exec(`cp ${logDir}/*.log ${backupDir}/${date} && tar -czvf ${backupDir}/${date}.tar.gz -C ${backupDir} ${date}`, (err) => { if (err) console.error('备份失败:', err); else console.log('备份成功'); }); - 通过
crontab定时执行:0 2 * * * /usr/bin/node /path/to/backup-logs.js。
- 编写脚本(
恢复方法
-
解压备份文件
使用tar命令解压至原日志路径:
tar -xzvf /path/to/backup/logs.tar.gz -C /path/to/logs。 -
使用备份工具同步
若为远程备份,可通过rsync恢复:
rsync -avz /path/to/backup/logs/ user@remote:/path/to/logs/。 -
借助第三方工具
若使用ELK Stack等集中式日志管理工具,可通过其恢复功能获取历史日志。
注意事项
- 定期检查备份文件完整性和存储空间。
- 敏感日志需加密存储或限制访问权限。
- 生产环境建议结合日志轮转(如
logrotate)和远程备份,避免本地单点故障。
参考来源:[1,2,3,4,9,10,11,12,14]