Ubuntu JavaScript应用日志备份策略
手动备份(基础方法):
使用tar命令打包日志目录(如/var/log/js-app/或应用自定义路径),生成压缩文件便于长期存储;或用rsync命令实现增量备份(仅同步修改过的文件),节省存储空间和传输时间。例如:sudo tar -czvf js_app_logs_$(date +%Y%m%d).tar.gz /var/log/js-app/(tar);sudo rsync -avz /var/log/js-app/ /backup/js-logs/(rsync)。这两种方法适合临时或少量日志备份,但需手动执行。
自动化备份(推荐):
编写Shell脚本整合tar/rsync命令,添加时间戳(如logs_backup_20250926.tar.gz)和自动清理(如删除7天前的备份),并通过cron定时任务(如每天凌晨1点)自动执行。例如脚本内容:#!/bin/bash; LOG_DIR="/var/log/js-app"; BACKUP_DIR="/backup/js-logs"; TIMESTAMP=$(date +%Y%m%d); tar -czvf "$BACKUP_DIR/logs_backup_$TIMESTAMP.tar.gz" "$LOG_DIR"; find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;,保存为backup_js_logs.sh后,执行chmod +x backup_js_logs.sh添加权限,再通过crontab -e添加0 1 * * * /path/to/backup_js_logs.sh。
工具化备份(高效管理):
使用logrotate(Ubuntu默认安装)实现日志自动轮转、压缩和删除。创建/etc/logrotate.d/js-app配置文件,添加规则:/var/log/js-app/*.log { daily rotate 7 compress delaycompress missingok notifempty create 640 root adm }(daily表示每天轮转,rotate 7保留7天,compress压缩旧日志,create创建新日志文件并设置权限)。可通过sudo logrotate -d /etc/logrotate.d/js-app测试配置语法,sudo logrotate -f /etc/logrotate.d/js-app强制立即执行。
Ubuntu JavaScript应用日志恢复方法
从备份文件恢复:
若日志已通过tar或rsync备份,可通过反向操作恢复。例如,用tar解压备份文件到原日志目录:tar -xzvf /backup/js-logs/logs_backup_20250926.tar.gz -C /var/log/js-app/;或用rsync同步远程/本地备份:rsync -avz /backup/js-logs/ /var/log/js-app/。
误删除日志恢复:
若日志文件被误删除但进程仍在运行(如rsyslog),可通过lsof命令查找进程占用的文件描述符,复制内容恢复。例如:sudo lsof | grep deleted | grep js-app.log(找到进程PID和FD,如1234和5),然后sudo cp /proc/1234/fd/5 /var/log/js-app.js-app.log,最后重启服务(sudo systemctl restart rsyslog)使新日志写入。
日志查看与提取:
若日志未被删除但需查找历史数据,可通过journalctl(systemd日志管理工具)查看系统日志(包括JS应用日志,若应用使用systemd运行)。例如:journalctl -u js-app.service(查看指定服务的日志),journalctl -n 50(查看最近50条),journalctl -p err(过滤错误级别日志)。也可直接查看应用日志文件(如/var/log/js-app/app.log)。