Ubuntu Node.js 数据备份实用方案
一 备份范围与准备
二 本地与远程备份命令
tar -czvf project-$(date +%F).tar.gz -C /path/to/project .rsync -av --delete /path/to/project/ /backup/nodejs/mysqldump -u USER -p DATABASE > backup_$(date +%F).sqlpg_dump -U USER -d DATABASE -f backup_$(date +%F).sqlmongodump --db DATABASE --out /backup/mongo/DATABASE_$(date +%F)rsync -avz /backup/ user@remote:/backup/nodejs/scp project-$(date +%F).tar.gz user@remote:/backup/三 日志备份与轮转
sudo nano /etc/logrotate.d/nodejs/path/to/nodejs/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 node node
postrotate
systemctl reload my-node-app.service >/dev/null 2>&1 || true
endscript
}
sudo logrotate -d /etc/logrotate.d/nodejssudo logrotate -f /etc/logrotate.d/nodejs#!/usr/bin/env bash
set -e
LOGS=/path/to/nodejs/logs
BACKUP=/backup/logs/$(date +%F)
mkdir -p "$BACKUP"
tar -czf "$BACKUP/nodejs_logs_$(date +%F).tar.gz" -C "$LOGS" .
find /backup/logs -type f -mtime +7 -delete
0 1 * * * /usr/bin/bash /usr/local/bin/backup_nodejs_logs.sh0 0 * * * rsync -avz --delete /backup/logs/ user@remote:/backup/nodejs-logs/四 定时备份与云存储
#!/usr/bin/env bash
set -e
BACKUP_DIR=/backup/db
NOW=$(date +%F_%H%M%S)
mkdir -p "$BACKUP_DIR"
mysqldump -u USER -pPASSWORD mydb | gzip > "$BACKUP_DIR/mydb_$NOW.sql.gz"
find "$BACKUP_DIR" -name "mydb_*.sql.gz" -mtime +7 -delete
# 可选:上传到对象存储(示例思路)
# node /opt/scripts/upload.js "$BACKUP_DIR/mydb_$NOW.sql.gz"
30 1 * * * /usr/bin/bash /usr/local/bin/db_backup.sh五 恢复与验证
tar -xzvf project-2025-09-01.tar.gz -C /opt/appcd /opt/app && npm ci --only=productionmysql -u USER -p DATABASE < backup_2025-09-01.sqlpsql -U USER -d DATABASE -f backup_2025-09-01.sqlmongorestore --db DATABASE /backup/mongo/DATABASE_2025-09-01systemctl status my-node-apptail -n 100 /path/to/nodejs/logs/app.log