跳转至

备份恢复

备份策略

定时备份脚本

创建 /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

灾难恢复流程

  1. 评估损失 - 确定数据损坏范围
  2. 停止服务 - 防止数据进一步损坏
  3. 恢复备份 - 从最近完好的备份恢复
  4. 验证数据 - 检查数据完整性
  5. 重新上线 - 启动服务并监控

返回运维手册