温馨提示×

Debian JS如何进行数据备份

小樊
56
2025-09-19 16:51:25
栏目: 编程语言

Debian系统上Node.js(JS)数据备份指南

在Debian系统中,Node.js应用的数据备份需覆盖代码、数据库、依赖、配置及静态文件等核心部分,以下是具体方法及步骤:

一、备份前的核心准备

  1. 确认数据存储位置
    明确Node.js应用的代码目录(如/home/user/my-node-app)、数据库类型(MySQL/PostgreSQL/MongoDB等)、配置文件路径(如.envconfig/目录)、静态文件路径(如public/uploads/)及日志目录(如logs/),这是备份的基础。

  2. 初始化版本控制(可选但推荐)
    若项目未使用Git,建议初始化仓库并将代码推送到远程(如GitHub、GitLab),便于版本追踪和远程备份:

    cd /path/to/nodejs-app
    git init
    git add .
    git commit -m "Initial commit"
    git remote add origin https://github.com/your-repo/your-app.git
    git push -u origin main
    

二、具体备份方法

1. 备份应用代码

  • 通过Git版本控制(推荐):
    将本地代码推送到远程仓库,确保代码安全:
    cd /path/to/nodejs-app
    git add .
    git commit -m "Daily code backup"
    git push origin main
    
  • 使用tar打包(无Git时):
    将整个项目目录压缩为.tar.gz文件,存储到安全位置(如/backup/):
    tar -czvf /backup/nodejs-app-backup_$(date +%F).tar.gz /path/to/nodejs-app
    

2. 备份数据库

根据数据库类型选择对应工具:

  • MySQL/MariaDB
    使用mysqldump导出数据库为SQL文件:
    mysqldump -u [username] -p[password] [database_name] > /backup/db_backup_$(date +%F).sql
    
  • PostgreSQL
    使用pg_dump导出数据库:
    pg_dump -U [username] -W -F c -b -v -f /backup/db_backup.dump [database_name]
    
  • MongoDB
    使用mongodump导出数据库文件:
    mongodump --db [database_name] --out /backup/mongo_backup_$(date +%F)
    

3. 备份依赖与配置

  • 依赖项
    备份package.jsonpackage-lock.json(或yarn.lock),确保恢复时能安装相同版本的依赖:
    cp /path/to/nodejs-app/package.json /backup/
    cp /path/to/nodejs-app/package-lock.json /backup/
    
  • 配置文件
    备份.env(环境变量)、config/(自定义配置)等目录:
    cp /path/to/nodejs-app/.env /backup/
    cp -r /path/to/nodejs-app/config /backup/
    

4. 备份静态文件与媒体

若应用有上传的图片、视频等静态文件,需备份对应的public/uploads/目录:

cp -r /path/to/nodejs-app/public /backup/
cp -r /path/to/nodejs-app/uploads /backup/

5. 备份日志文件

日志文件(如logs/app.log)可能包含错误信息或业务数据,需定期备份:

  • 使用tar压缩
    tar -czvf /backup/logs_backup_$(date +%F).tar.gz /path/to/nodejs-app/logs
    
  • 使用logrotate工具(自动化管理)
    安装logrotate并创建配置文件/etc/logrotate.d/nodejs-logs,内容如下:
    /path/to/nodejs-app/logs/*.log {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 640 root adm
    }
    
    该配置会每日压缩日志,保留最近7天的备份。

三、自动化备份(关键步骤)

通过cron定时任务自动执行备份脚本,避免手动操作遗漏:

  1. 创建备份脚本(如/usr/local/bin/nodejs_backup.sh):
    #!/bin/bash
    # 备份代码(Git)
    cd /path/to/nodejs-app
    git push origin main
    
    # 备份数据库(MySQL示例)
    mysqldump -u [username] -p[password] [database_name] > /backup/db_backup_$(date +%F).sql
    
    # 备份静态文件
    cp -r /path/to/nodejs-app/public /backup/
    
    # 备份日志
    tar -czvf /backup/logs_backup_$(date +%F).tar.gz /path/to/nodejs-app/logs
    
    # 删除30天前的备份(可选)
    find /backup -type f -name "*.tar.gz" -mtime +30 -exec rm {} \;
    
  2. 赋予脚本执行权限
    chmod +x /usr/local/bin/nodejs_backup.sh
    
  3. 添加cron任务
    编辑当前用户的crontab(crontab -e),添加以下行(每日凌晨2点执行):
    0 2 * * * /usr/local/bin/nodejs_backup.sh >> /var/log/nodejs_backup.log 2>&1
    

四、恢复数据(简要步骤)

若需恢复数据,按备份顺序反向操作:

  1. 恢复代码
    若使用Git,拉取远程仓库代码;若使用tar,解压备份文件到原目录。
  2. 恢复数据库
    • MySQL:mysql -u [username] -p[password] [database_name] < /backup/db_backup.sql
    • PostgreSQL:pg_restore -U [username] -d [database_name] /backup/db_backup.dump
    • MongoDB:mongorestore --db [database_name] /backup/mongo_backup_$(date +%F)
  3. 恢复依赖与配置
    复制package.json.env等文件到原目录,运行npm install安装依赖。
  4. 恢复静态文件与日志
    解压静态文件和日志备份到对应目录。

通过以上步骤,可实现Debian系统上Node.js数据的全面备份与自动化管理,确保数据安全。

0