Add automatic database backup with download and restore docs.
Back up futures.db and uploads to /root/qihuo_backup on a daily schedule, expose backup downloads in settings, and document cross-server restore. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+119
@@ -0,0 +1,119 @@
|
||||
# 数据备份与恢复
|
||||
|
||||
qihuo 支持自动备份 SQLite 数据库与复盘附件,生成可在其他 Linux 服务器恢复的压缩包。
|
||||
|
||||
---
|
||||
|
||||
## 备份内容
|
||||
|
||||
| 内容 | 说明 |
|
||||
|------|------|
|
||||
| `futures.db` | 主库:账号、交易记录、设置、统计缓存等 |
|
||||
| `uploads/` | 复盘截图、自动 K 线图(若存在) |
|
||||
| `manifest.json` | 备份时间与文件清单 |
|
||||
| `RESTORE.md` | 包内恢复说明 |
|
||||
| `restore.sh` | 一键恢复脚本 |
|
||||
|
||||
**不包含** `.env`(含 CTP 密码等敏感信息),请单独安全保管或在新服务器重新配置。
|
||||
|
||||
---
|
||||
|
||||
## 备份目录
|
||||
|
||||
默认:**`/root/qihuo_backup`**
|
||||
|
||||
可通过环境变量覆盖:
|
||||
|
||||
```bash
|
||||
# /opt/qihuo/.env 或 systemd/PM2 环境
|
||||
QIHUO_BACKUP_DIR=/data/qihuo_backup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 系统设置页
|
||||
|
||||
路径:**系统设置 → 数据备份与恢复**
|
||||
|
||||
- **立即备份**:后台生成 `qihuo_backup_YYYYMMDD_HHMMSS.tar.gz`
|
||||
- **每日自动备份**:默认每天 **03:00**(Asia/Shanghai)执行
|
||||
- **保留份数**:默认保留最近 **30** 份,超出自动删除最旧文件
|
||||
- **下载**:列表中点击「下载」获取压缩包
|
||||
|
||||
---
|
||||
|
||||
## 在新服务器恢复
|
||||
|
||||
### 方式一:使用包内脚本(推荐)
|
||||
|
||||
```bash
|
||||
# 1. 上传压缩包到目标机
|
||||
scp qihuo_backup_20260626_030015.tar.gz root@新服务器:/root/
|
||||
|
||||
# 2. 解压并恢复
|
||||
cd /root
|
||||
tar -xzf qihuo_backup_20260626_030015.tar.gz
|
||||
cd qihuo_backup_20260626_030015
|
||||
chmod +x restore.sh
|
||||
./restore.sh
|
||||
```
|
||||
|
||||
默认恢复到 **`/root/qihuo`**。若生产目录为 `/opt/qihuo`:
|
||||
|
||||
```bash
|
||||
RESTORE_DIR=/opt/qihuo ./restore.sh
|
||||
```
|
||||
|
||||
也可通过环境变量固定默认恢复目录:
|
||||
|
||||
```bash
|
||||
QIHUO_RESTORE_DIR=/opt/qihuo
|
||||
```
|
||||
|
||||
### 方式二:手工复制
|
||||
|
||||
```bash
|
||||
tar -xzf qihuo_backup_20260626_030015.tar.gz
|
||||
cd qihuo_backup_20260626_030015
|
||||
pm2 stop qihuo # 或停止当前进程
|
||||
cp futures.db /opt/qihuo/futures.db
|
||||
cp -a uploads/. /opt/qihuo/uploads/ # 若有 uploads
|
||||
pm2 restart qihuo
|
||||
```
|
||||
|
||||
### 恢复后检查清单
|
||||
|
||||
1. 已部署 qihuo 代码与 Python 虚拟环境(见 [DEPLOY.md](./DEPLOY.md))
|
||||
2. 已配置 `.env`(`SECRET_KEY`、CTP 账号等)
|
||||
3. 数据库文件权限正确(运行用户可读写的 `futures.db`)
|
||||
4. 访问 Web 登录,检查交易记录、统计页是否正常
|
||||
5. CTP 模式需在新环境重新连接柜台
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
- **恢复前务必停止 qihuo**,避免进程占用数据库导致覆盖不完整
|
||||
- 备份使用 SQLite `backup` API,并在 WAL 模式下尝试 checkpoint,降低锁冲突风险
|
||||
- 自动备份在应用后台线程执行,与 Web 服务同进程;PM2 重启不影响已生成的历史压缩包
|
||||
- 大体积 `uploads/` 会使压缩包变大,可按需定期清理无用截图
|
||||
- 不要将含 `.env`、数据库的压缩包上传到公开网盘
|
||||
|
||||
---
|
||||
|
||||
## 故障排查
|
||||
|
||||
| 现象 | 处理 |
|
||||
|------|------|
|
||||
| 设置页无备份列表 | 检查 `/root/qihuo_backup` 目录权限,进程需可写 |
|
||||
| 立即备份无反应 | 查看 PM2 日志;可能上一任务仍在进行 |
|
||||
| 下载 404 | 文件名须为系统生成的 `qihuo_backup_*.tar.gz` |
|
||||
| 恢复后无法登录 | 确认 `futures.db` 已覆盖到实际运行目录 |
|
||||
| 恢复后 CTP 连不上 | 在新服务器配置正确的 `.env` CTP 参数 |
|
||||
|
||||
---
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [DEPLOY.md](./DEPLOY.md) — 部署与目录结构
|
||||
- [FEATURES.md](./FEATURES.md) — 功能与路由一览
|
||||
+14
-3
@@ -257,11 +257,22 @@ python app.py
|
||||
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `/opt/qihuo/futures.db` | 主数据库,建议定期备份 |
|
||||
| `/opt/qihuo/futures.db` | 主数据库 |
|
||||
| `/opt/qihuo/uploads/` | 复盘截图、自动 K 线图 |
|
||||
| `/opt/qihuo/data/fee_rates.json` | 默认手续费表(可重载) |
|
||||
| `/root/qihuo_backup/` | 系统自动备份目录(`.tar.gz`) |
|
||||
|
||||
备份示例:
|
||||
### 自动备份(推荐)
|
||||
|
||||
系统设置 → **数据备份与恢复**:
|
||||
|
||||
- 默认每天 03:00 自动备份到 `/root/qihuo_backup`
|
||||
- 含 `futures.db` 与 `uploads/`,可在其他服务器恢复
|
||||
- 设置页可立即备份、下载历史压缩包
|
||||
|
||||
完整说明见 **[BACKUP.md](./BACKUP.md)**。
|
||||
|
||||
### 手工备份(备选)
|
||||
|
||||
```bash
|
||||
cp /opt/qihuo/futures.db /opt/qihuo/futures.db.bak.$(date +%Y%m%d)
|
||||
@@ -389,7 +400,7 @@ pm2 restart qihuo
|
||||
1. 部署后立即修改默认密码
|
||||
2. 勿将 `.env`、`futures.db` 提交到公开仓库
|
||||
3. 生产环境使用 HTTPS + 限制访问 IP
|
||||
4. 定期备份 `futures.db` 与 `uploads/`
|
||||
4. 定期备份:系统设置页自动备份至 `/root/qihuo_backup`,或见 [BACKUP.md](docs/BACKUP.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -177,8 +177,11 @@
|
||||
| 参考资金 | CTP 未连接时用于可开仓筛选与估算 |
|
||||
| 企业微信 Webhook | 计划/关键位推送 |
|
||||
| 修改密码 | 管理员密码 |
|
||||
| 数据备份与恢复 | 自动/手动备份、下载压缩包、恢复说明 |
|
||||
| 深色/浅色主题 | 页头切换 |
|
||||
|
||||
备份详情见 [BACKUP.md](./BACKUP.md)。
|
||||
|
||||
忘记密码:`python reset_admin.py`
|
||||
|
||||
---
|
||||
@@ -231,6 +234,7 @@
|
||||
| CTP 开盘前连接 | 默认开盘前 30 分钟 |
|
||||
| 挂单超时撤单 | 可配置分钟数 |
|
||||
| 止盈止损守护 | CTP 持仓监控线程 |
|
||||
| 数据库自动备份 | 每日定时(默认 03:00)写入 `/root/qihuo_backup` |
|
||||
|
||||
---
|
||||
|
||||
@@ -244,6 +248,7 @@ qihuo/
|
||||
├── ctp_trade_sync.py # 柜台成交同步到 trade_logs
|
||||
├── product_recommend.py # 可开仓品种计算
|
||||
├── stats_engine.py # 统计分析
|
||||
├── db_backup.py # 数据库备份与恢复包
|
||||
├── fee_specs.py / ctp_fee_sync.py
|
||||
├── market.py / kline_chart.py
|
||||
├── templates/ static/
|
||||
|
||||
Reference in New Issue
Block a user