阅读量:26
Debian系统上Node.js备份与恢复指南
一、备份方法
1. 停止Node.js应用(可选但推荐)
若使用pm2管理应用,停止应用可避免备份时数据不一致:
pm2 stop
(注:为PM2中注册的应用名称,可通过pm2 list查看)
2. 备份项目代码
- 基础打包:进入项目目录,使用
tar命令打包(排除node_modules目录,减少体积):
tar -czvf my-nodejs-project-backup.tar.gz --exclude='node_modules' . - 增量备份(推荐):使用
rsync工具实现高效同步(仅备份变化文件):
rsync -av --delete /path/to/project/ /path/to/backup/
(--delete选项会删除备份目录中不存在于源目录的文件,确保一致性)
3. 备份项目依赖
- 锁定依赖版本:在项目根目录运行
npm install,生成package-lock.json文件(或yarn.lock,若使用Yarn)。该文件记录了依赖的具体版本,确保恢复时安装一致版本的包。
4. 备份数据库(若有)
- MongoDB:使用
mongodump导出数据库到指定目录:
mongodump --out /path/to/backup/mongodb - MySQL/MariaDB:使用
mysqldump导出数据库结构与数据:
mysqldump -u-p > /path/to/backup/mysql_backup.sql
(替换、、为实际值)
5. 备份配置与静态文件
- 关键配置文件:备份
.env(环境变量)、config/(自定义配置目录)等,避免敏感信息丢失; - 静态文件:备份
public/(上传的图片、视频等)、uploads/等目录,确保业务数据完整
6. 自动化备份(可选)
- 编写备份脚本:创建
backup.sh,整合上述步骤(示例):#!/bin/bash BACKUP_DIR="/path/to/backup/nodejs_$(date +%F)" mkdir -p "$BACKUP_DIR" rsync -av --delete /path/to/project/ "$BACKUP_DIR/" cp /path/to/project/package*.json "$BACKUP_DIR/" mongodump --out "$BACKUP_DIR/mongodb" - 设置cron定时任务:编辑crontab(
crontab -e),添加每日凌晨2点执行的定时任务:
0 2 * * * /path/to/backup.sh
(确保脚本有执行权限:chmod +x /path/to/backup.sh)
二、恢复方法
1. 恢复项目代码
- 解压备份包:将备份文件复制到目标服务器,解压到指定目录:
tar -xzvf my-nodejs-project-backup.tar.gz -C /path/to/target/directory - 增量恢复(rsync):若使用
rsync备份,反向同步即可:
rsync -av --delete /path/to/backup/ /path/to/project/
2. 恢复项目依赖
进入项目目录,运行npm install,根据package-lock.json安装依赖:
cd /path/to/target/directory && npm install
3. 恢复数据库(若有)
- MongoDB:使用
mongorestore导入备份数据:
mongorestore /path/to/backup/mongodb - MySQL/MariaDB:使用
mysql导入SQL文件:
mysql -u-p < /path/to/backup/mysql_backup.sql
4. 恢复配置与静态文件
将备份的.env、config/、public/等目录复制回项目对应位置,覆盖现有文件(注意:.env文件包含敏感信息,需确保安全)
5. 启动Node.js应用
使用pm2启动应用(若之前用pm2管理):
pm2 start
或直接运行app.js:
node /path/to/target/directory/app.js