Ubuntu上Node.js应用备份与恢复指南
使用tar命令将Node.js项目目录打包为压缩文件(包含所有源代码、配置文件和package.json/package-lock.json):
cd /path/to/your/nodejs/project # 进入项目目录
tar -czvf project-backup.tar.gz . # 打包当前目录所有内容
将生成的project-backup.tar.gz复制到安全位置(如外部硬盘、云存储或/home/username/backups目录)。
通过package.json文件记录项目依赖,无需单独备份node_modules(恢复时可通过npm install重新安装)。若需备份依赖列表,可生成生产环境依赖JSON文件:
npm install --production --json > production-dependencies.json
将此文件与代码备份一同存储。
若应用使用数据库(如MySQL、MongoDB),需单独备份数据库文件:
mysqldump导出数据库结构和数据:mysqldump -u [username] -p[password] [database_name] > db_backup.sql
mongodump导出数据库:mongodump --db [database_name] --out /path/to/backup/directory
将导出的SQL或dump文件复制到安全位置。
通过脚本+定时任务实现定期自动备份:
backup.sh):#!/bin/bash
BACKUP_DIR="/path/to/backup"
DATE=$(date +"%Y%m%d_%H%M%S")
tar -czvf "$BACKUP_DIR/project_$DATE.tar.gz" /path/to/your/nodejs/project
mysqldump -u [username] -p[password] [database_name] > "$BACKUP_DIR/db_$DATE.sql"
赋予执行权限:chmod +x backup.sh。crontab -e添加规则(如每天凌晨2点执行):0 2 * * * /path/to/backup.sh
若需增量备份(仅备份修改过的文件),可使用rsync工具:
rsync -avz --delete /path/to/your/nodejs/project /path/to/backup/directory
-a:归档模式(保留权限、时间戳等);-v:显示详细信息;--delete:删除备份目录中不存在于源目录的文件(保持同步)。将备份的project-backup.tar.gz复制到目标服务器的项目目录,解压恢复:
cd /path/to/your/nodejs/project # 进入目标项目目录
tar -xzvf project-backup.tar.gz # 解压覆盖现有文件
若未备份node_modules,需重新安装依赖:
npm install # 根据package.json安装所有依赖
若备份了production-dependencies.json,可使用以下命令快速安装生产环境依赖:
npm install --production --json < production-dependencies.json
mysql -u [username] -p[password] [database_name] < db_backup.sql
mongorestore /path/to/backup/directory/database_name
npm start或node app.js启动应用,测试功能是否正常;