Debian系統上Node.js(JS)數據備份指南
在Debian系統中,Node.js應用的數據備份需覆蓋代碼、數據庫、依賴、配置及靜態文件等核心部分,以下是具體方法及步驟:
確認數據存儲位置
明確Node.js應用的代碼目錄(如/home/user/my-node-app
)、數據庫類型(MySQL/PostgreSQL/MongoDB等)、配置文件路徑(如.env
、config/
目錄)、靜態文件路徑(如public/
、uploads/
)及日志目錄(如logs/
),這是備份的基礎。
初始化版本控制(可選但推薦)
若項目未使用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
cd /path/to/nodejs-app
git add .
git commit -m "Daily code backup"
git push origin main
.tar.gz
文件,存儲到安全位置(如/backup/
):tar -czvf /backup/nodejs-app-backup_$(date +%F).tar.gz /path/to/nodejs-app
根據數據庫類型選擇對應工具:
mysqldump
導出數據庫為SQL文件:mysqldump -u [username] -p[password] [database_name] > /backup/db_backup_$(date +%F).sql
pg_dump
導出數據庫:pg_dump -U [username] -W -F c -b -v -f /backup/db_backup.dump [database_name]
mongodump
導出數據庫文件:mongodump --db [database_name] --out /backup/mongo_backup_$(date +%F)
package.json
和package-lock.json
(或yarn.lock
),確?;謴蜁r能安裝相同版本的依賴: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/
若應用有上傳的圖片、視頻等靜態文件,需備份對應的public/
、uploads/
目錄:
cp -r /path/to/nodejs-app/public /backup/
cp -r /path/to/nodejs-app/uploads /backup/
日志文件(如logs/app.log
)可能包含錯誤信息或業務數據,需定期備份:
tar -czvf /backup/logs_backup_$(date +%F).tar.gz /path/to/nodejs-app/logs
/etc/logrotate.d/nodejs-logs
,內容如下:/path/to/nodejs-app/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
該配置會每日壓縮日志,保留最近7天的備份。通過cron
定時任務自動執行備份腳本,避免手動操作遺漏:
/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 {} \;
chmod +x /usr/local/bin/nodejs_backup.sh
crontab -e
),添加以下行(每日凌晨2點執行):0 2 * * * /usr/local/bin/nodejs_backup.sh >> /var/log/nodejs_backup.log 2>&1
若需恢復數據,按備份順序反向操作:
mysql -u [username] -p[password] [database_name] < /backup/db_backup.sql
pg_restore -U [username] -d [database_name] /backup/db_backup.dump
mongorestore --db [database_name] /backup/mongo_backup_$(date +%F)
package.json
、.env
等文件到原目錄,運行npm install
安裝依賴。通過以上步驟,可實現Debian系統上Node.js數據的全面備份與自動化管理,確保數據安全。