温馨提示×

JS日志在Linux如何备份

小樊
43
2026-08-28 23:43:21
栏目: 编程语言

在 Linux 上备份 JS(JavaScript)日志,常见做法取决于日志来源(Node.js、前端、Nginx、Docker 等)。下面按最常见场景给你一套实用方案。


一、常见的 JS 日志位置

  • Node.js 应用
    • 手动写日志:logs/app.log
    • 框架日志(如 PM2):~/.pm2/logs/
  • 前端 JS(Nginx 反向代理)
    • /var/log/nginx/access.log
    • /var/log/nginx/error.log
  • Docker 容器
    • docker logs 或挂载卷

二、最基础的备份方式(推荐)

✅ 使用 cptar 备份

cp /path/to/app.log /backup/app-$(date +%F).log

或打包:

tar czf /backup/js-logs-$(date +%F).tar.gz /path/to/logs

三、按时间自动备份(生产常用)

✅ 使用 logrotate(强烈推荐)

适合长期运行的服务。

示例:/etc/logrotate.d/nodejs

/var/log/nodejs/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 0644 node node
    copytruncate
}

✅ 优点

  • 自动按天/大小切割
  • 自动压缩
  • 不影响正在运行的 JS 进程

四、Node.js 应用日志备份方案

✅ 方案 1:PM2 日志备份

pm2 logs --out > /backup/pm2-out-$(date +%F).log
pm2 logs --err > /backup/pm2-err-$(date +%F).log

或定期清理:

pm2 flush

✅ 方案 2:Winston / Pino 日志库

最佳实践:日志按天切分

Winston 示例

new winston.transports.DailyRotateFile({
  filename: 'logs/app-%DATE%.log',
  datePattern: 'YYYY-MM-DD',
  maxFiles: '30d'
})

五、Docker 中 JS 日志备份

✅ 挂载日志目录

docker run -v /backup/js-logs:/app/logs node-app

✅ 备份 docker 日志

docker logs container_id > /backup/container.log 2>&1

六、远程备份(推荐生产环境)

✅ 使用 rsync

rsync -avz /var/log/nodejs/ user@backup-server:/backup/nodejs/

✅ 定时任务

crontab -e
0 2 * * * rsync -avz /path/to/logs/ /backup/logs/

七、典型生产架构(推荐)

JS 应用
  ↓
日志文件 / Docker / Winston
  ↓
logrotate 按天切割 + 压缩
  ↓
rsync / 对象存储(OSS / S3)

八、你可以告诉我这些,我可以给你精确方案

  1. JS 是 Node.js 还是前端
  2. 日志是 文件还是 stdout
  3. 是否使用 PM2 / Docker / Nginx
  4. Linux 版本(CentOS / Ubuntu)?

我可以直接帮你写 可用配置 + 一键脚本

0