备份恢复
备份策略
定时备份脚本
创建 /home/ubuntu/bioinfo-system-new/scripts/backup.sh:
#!/bin/bash
# 备份脚本 - 建议通过 cron 每日执行
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/data/backups/bioinfo"
mkdir -p $BACKUP_DIR
echo "=== 开始备份: $DATE ==="
# 备份数据目录
tar -czf $BACKUP_DIR/data_$DATE.tar.gz \
/home/ubuntu/bioinfo-system-new/data/
# 备份配置文件
tar -czf $BACKUP_DIR/config_$DATE.tar.gz \
/home/ubuntu/bioinfo-system-new/config.py \
/home/ubuntu/bioinfo-system-new/.env
# 备份上传文件(可选,减少备份大小)
# tar -czf $BACKUP_DIR/uploads_$DATE.tar.gz \
# /home/ubuntu/bioinfo-system-new/data/uploads/
# 备份数据库(如果有)
# pg_dump -U postgres bioinfo > $BACKUP_DIR/db_$DATE.sql
# 清理 7 天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
echo "=== 备份完成: $DATE ==="
ls -lh $BACKUP_DIR/
设置定时任务
# 编辑 crontab
crontab -e
# 添加每日凌晨 3 点执行备份
0 3 * * * /home/ubuntu/bioinfo-system-new/scripts/backup.sh >> /home/ubuntu/bioinfo-system-new/logs/backup.log 2>&1
数据恢复
恢复数据
# 停止服务
pkill -f "uvicorn main:app"
sleep 2
# 恢复数据目录
tar -xzf /path/to/backup/data_20260508.tar.gz -C /
# 恢复配置文件
tar -xzf /path/to/backup/config_20260508.tar.gz -C /
# 重启服务
cd /home/ubuntu/bioinfo-system-new
source .venv/bin/activate
nohup python -m uvicorn main:app --host 0.0.0.0 --port 8000 > logs/server.log 2>&1 &
备份清单
| 备份项 | 频率 | 保留时间 | 位置 |
|---|---|---|---|
| 数据目录 | 每日 | 7天 | /data/backups/bioinfo/ |
| 配置文件 | 每日 | 30天 | /data/backups/bioinfo/ |
| 日志文件 | 每周 | 30天 | /data/backups/logs/ |
| 代码仓库 | 每次发布 | 永久 | GitHub |
灾难恢复流程
- 评估损失 - 确定数据损坏范围
- 停止服务 - 防止数据进一步损坏
- 恢复备份 - 从最近完好的备份恢复
- 验证数据 - 检查数据完整性
- 重新上线 - 启动服务并监控