如何备份Ubuntu JS日志数据
导读:Ubuntu JS日志备份实用方案 一 定位日志路径与准备 常见存放位置: Node.js 应用日志:应用配置的输出目录,如 /var/log/my_js_app/、/opt/myapp/logs/。 系统日志:/var/log/(如...
Ubuntu JS日志备份实用方案
一 定位日志路径与准备
- 常见存放位置:
- Node.js 应用日志:应用配置的输出目录,如 /var/log/my_js_app/、/opt/myapp/logs/。
- 系统日志:/var/log/(如 syslog、auth.log 等)。
- 快速确认日志目录:
- 查看目录内容:
ls /var/log - 查找包含 node/应用名的日志:
sudo find /var/log -type f -name "*.log" | grep -i node
- 查看目录内容:
- 备份目录准备(示例):
sudo mkdir -p /backup/nodejs-logs & & sudo chown $USER:$USER /backup/nodejs-logs - 权限提示:系统日志多为 root:adm,必要时使用 sudo 或在脚本中提升权限。
二 方法一 使用 logrotate 做本地轮转与保留(推荐)
- 安装(如未安装):
sudo apt-get update & & sudo apt-get install logrotate - 创建配置:
sudo nano /etc/logrotate.d/nodejs - 示例配置(按实际路径修改):
/var/log/nodejs/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 root adm copytruncate dateext } - 参数要点:
- daily/rotate 7/compress:按天轮转并保留 7 天压缩归档。
- copytruncate:复制后截断原文件,避免重启应用;若应用支持信号重载,可用 postrotate … endscript 发送 USR1 触发重新打开日志。
- 测试与生效:
- 语法检查:
sudo logrotate -d /etc/logrotate.conf - 强制执行:
sudo 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.sh - 定时任务(每天 02:00):
crontab -e0 2 * * * /usr/local/bin/backup-node-logs.sh > > /var/log/backup-node-logs.log 2> & 1 - 适用场景:需要按时间点归档、便于下载/离线保存与审计。
四 方法三 远程备份与多副本(rsync + 可选 rsnapshot)
- rsync 增量同步到远程主机:
rsync -avz --delete /var/log/nodejs/ user@remote:/backup/nodejs-logs/- 定时(每天 00:00):
0 0 * * * rsync -avz --delete /var/log/nodejs/ user@remote:/backup/nodejs-logs/
- 定时(每天 00:00):
- 本地快照式多版本(可选):
- 安装:
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-logrotate - 常用参数:
pm2 set pm2-logrotate:max_size 100Mpm2 set pm2-logrotate:retain 30pm2 set pm2-logrotate:compress true
- 适用场景:PM2 托管的应用,无需改动应用代码即可完成按大小滚动与压缩。
六 恢复与校验及注意事项
- 恢复方式:
- 从 tar 归档恢复:
sudo tar -xzvf /backup/nodejs-logs/nodejs-2025-08-01.tar.gz -C /var/log/nodejs - 用 rsync 回拷:
sudo rsync -aAXv /backup/nodejs-logs/ /var/log/nodejs/
- 从 tar 归档恢复:
- 校验与清理:
- 校验可读性:
tar -tzvf file.tar.gz或zcat file.log.gz | head - 定期清理旧备份:
find /backup -name "*.tar.gz" -mtime +30 -delete
- 校验可读性:
- 关键注意事项:
- 权限与属主:系统日志多为 root:adm,恢复时注意权限一致性。
- 应用写入方式:使用 copytruncate 可避免重启;若用信号重载(如 USR1),确保应用支持。
- 远程备份:优先使用 SSH 密钥免密登录,保障安全与可自动化。
- 保留策略:按合规与磁盘容量设置 rotate 或保留天数(如 7–30 天)。
- 定期演练:定期恢复抽查,确保备份可用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何备份Ubuntu JS日志数据
本文地址: https://pptw.com/jishu/783742.html
