Ubuntu Node.js应用数据备份与恢复指南
在开始备份前,需明确备份范围(涵盖应用代码、依赖项、数据库、配置文件及日志),并确定备份周期(如每日增量备份+每周完全备份)和存储位置(本地目录、外部硬盘或云存储,优先异地备份以防止本地灾难)。这些规划是确保备份有效性的基础。
tar命令将所有代码(包括src、public等目录)打包为压缩文件,保留目录结构。例如:tar -czvf my-nodejs-app-backup.tar.gz .
package.json(包含依赖列表)和package-lock.json(锁定依赖版本)文件已存在,它们是恢复依赖的关键。可将这两个文件与项目压缩包一起存储。mysqldump工具备份指定数据库,生成SQL脚本(包含表结构和数据)。例如:mysqldump -u root -p your_database_name > /path/to/backup/db_backup.sql
mongodump命令备份数据库到指定目录(生成BSON文件)。例如:mongodump --db your_database_name --out /path/to/backup/mongo_backup
redis-dump工具导出数据为JSON格式。.env文件(存储敏感信息如API密钥、数据库密码)到备份目录。注意:.env文件不应提交至版本控制系统(如Git)。config/目录下的自定义配置文件(如config.js、config.production.json)。crontab设置定时执行。例如:
backup.sh内容:#!/bin/bash
BACKUP_DIR="/home/ubuntu/backups"
DATE=$(date +"%Y%m%d_%H%M%S")
mkdir -p "$BACKUP_DIR"
tar -czvf "$BACKUP_DIR/app_$DATE.tar.gz" /path/to/nodejs/app
mysqldump -u root -p your_database_name > "$BACKUP_DIR/db_$DATE.sql"
crontab -e
# 添加以下行
0 2 * * * /bin/bash /path/to/backup.sh
tar模块编写Node.js脚本(如backup.js),实现编程式备份,适合需要更灵活控制的场景。tar -xzvf my-nodejs-app-backup.tar.gz -C /path/to/nodejs/app
npm install(或yarn install),根据package.json和package-lock.json重新安装依赖。mysql命令导入备份的SQL脚本。例如:mysql -u root -p your_database_name < /path/to/backup/db_backup.sql
mongorestore命令恢复数据库。例如:mongorestore /path/to/backup/mongo_backup/your_database_name
redis-load工具导入备份的JSON文件。.env文件和config/目录下的文件复制回原位置,覆盖现有文件(注意:恢复前需停止应用服务,避免配置冲突)。pm2 start app.js或node app.js),检查应用是否能正常运行。gpg加密压缩包),防止数据泄露或物理损坏。cron日志)监控备份任务的执行情况,及时处理失败任务(如磁盘空间不足、权限问题)。