首页主机资讯Debian上Node.js的备份与恢复

Debian上Node.js的备份与恢复

时间2026-01-18 17:30:04发布访客分类主机资讯浏览291
导读:备份范围与策略 明确备份对象:应用代码与配置(如 /var/www/my_node_app)、依赖清单(package.json / package-lock.json)、数据库(如 MySQL / MongoDB / PostgreSQ...

备份范围与策略

  • 明确备份对象:应用代码与配置(如 /var/www/my_node_app)、依赖清单(package.json / package-lock.json)、数据库(如 MySQL / MongoDB / PostgreSQL)、运行时数据(如 uploads/、会话文件、缓存等)。代码建议纳入 Git 管理,生产环境以制品包或镜像为主,备份侧重配置与数据。
  • 选择备份方式:文件系统用 tar 做全量打包,用 rsync 做增量/远程同步;数据库用各自工具(如 mysqldump / mongodump / pg_dump)。
  • 制定周期与保留:例如每日全量 + 保留 7 天,关键数据可同步到远端或云端。
  • 自动化与验证:用 cron 定时执行,定期做恢复演练与校验(如校验和、条目数)。

备份步骤

  • 代码与静态资源
    • 全量打包:tar -czvf /backup/app_$(date +%F).tar.gz -C /var/www my_node_app
    • 增量/远程同步:rsync -avz --delete /var/www/my_node_app/ user@remote:/backup/my_node_app/
  • 依赖与配置
    • 仅备份清单与锁文件:cp package.json package-lock.json .env /backup/
    • 如需导出全局包列表:npm list -g --depth=0 > /backup/npm-global.txt
  • 数据库
    • MySQL:mysqldump -u [username] -p[password] [database_name] > /backup/db_$(date +%F).sql
    • PostgreSQL:pg_dump -U [username] -W [database_name] > /backup/db_$(date +%F).sql
    • MongoDB:mongodump --uri=“mongodb://[user]:[pass]@[host:port]/[db]” --out /backup/mongo_$(date +%F)
  • 日志与运行时文件
    • 使用 logrotate 轮转并压缩日志,定期将已轮转日志目录同步到备份服务器。
  • 安全与权限
    • 避免在命令行中明文写密码,可使用配置文件、环境变量或凭据文件;备份文件权限建议设为 600

恢复步骤

  • 准备与停写
    • 恢复前建议先停止应用(如 systemctl stop my_node_app 或 pm2 stop my_node_app),避免数据不一致。
  • 代码与静态资源
    • 解压:tar -xzvf /backup/app_YYYY-MM-DD.tar.gz -C /var/www/my_node_app
    • 或同步回源:rsync -av /backup/my_node_app/ /var/www/my_node_app/
  • 依赖与配置
    • 安装依赖:cd /var/www/my_node_app & & npm install --production
    • 恢复配置:cp /backup/.env /var/www/my_node_app/.env
  • 数据库
    • MySQL:mysql -u [username] -p[password] [database_name] < /backup/db_YYYY-MM-DD.sql
    • PostgreSQL:psql -U [username] -d [database_name] -f /backup/db_YYYY-MM-DD.sql
    • MongoDB:mongorestore --uri=“mongodb://[user]:[pass]@[host:port]/[db]” /backup/mongo_YYYY-MM-DD/[db]
  • 启动与验证
    • 启动应用:systemctl start my_node_app 或 pm2 start my_node_app
    • 校验:检查进程、监听端口、关键业务接口、日志与数据库记录数。

自动化与脚本示例

  • 一体化备份脚本(示例)
    • #!/usr/bin/env bash
      set -Eeuo pipefail
      APP=/var/www/my_node_app
      BACKUP=/backup
      DATE=$(date +%F)
      mkdir -p “$BACKUP”
      tar -czf “$BACKUP/app_$DATE.tar.gz” -C “$APP” .
      mysqldump -u root -p’***’ mydb > “$BACKUP/db_$DATE.sql”
      tar -czf “$BACKUP/full_$DATE.tar.gz” -C “$BACKUP” app_$DATE.tar.gz db_$DATE.sql
      rm -f “$BACKUP”/{ app_
      ,db_
      } “$BACKUP”/full_
      .tar.gz
      find “$BACKUP” -type f -mtime +7 -delete
  • 定时执行(crontab)
    • 每天 02:00 执行:0 2 * * * /usr/local/bin/backup.sh > > /var/log/backup.log 2> & 1
  • 恢复演练
    • 定期在预备环境按上述步骤演练恢复,并做校验和/记录数核对,确保可用性。

注意事项与最佳实践

  • 不要把 node_modules/ 纳入 tar 打包,恢复时用 npm install 重建,避免平台/版本差异导致的问题。
  • 凭据与密钥(如 .env、SSH 私钥)单独加密备份,权限设为 600,严禁与代码同仓。
  • 数据库恢复前先创建空库,避免权限/结构冲突;必要时在低峰期执行。
  • 日志管理优先用 logrotate 做轮转与压缩,再配合 rsync 做远程归档。
  • 建议采用“每日全量 + 保留 7 天”的保留策略,关键数据可同步到远端/云端,并定期做恢复演练与校验。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian上Node.js的备份与恢复
本文地址: https://pptw.com/jishu/784560.html
getconf命令在Debian中的常见错误有哪些 Debian与Node.js的更新策略

游客 回复需填写必要信息