# 数据备份与恢复 qihuo 支持自动备份数据库与复盘附件,生成可在其他 Linux 服务器恢复的压缩包。 存储后端由 `.env` 决定: | 后端 | 备份包内主文件 | 说明 | |------|----------------|------| | SQLite(默认) | `futures.db` | 本地单文件库 | | PostgreSQL | `postgres_dump.sql` | `pg_dump` 逻辑备份 | PostgreSQL 部署与迁移见 **[POSTGRES.md](./POSTGRES.md)**。 --- ## 备份内容 | 内容 | 说明 | |------|------| | `futures.db` | SQLite 主库(仅 SQLite 模式) | | `postgres_dump.sql` | PostgreSQL 逻辑备份(仅 PostgreSQL 模式) | | `uploads/` | 复盘截图、自动 K 线图(若存在) | | `manifest.json` | 备份时间、**backend** 字段、文件清单 | | `RESTORE.md` | 包内恢复说明 | | `restore.sh` | 一键恢复脚本 | **不包含** `.env`(含 CTP 密码、`DATABASE_URL` 等),请单独安全保管或在新服务器重新配置。 --- ## 备份目录 默认:**`/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** 份,超出自动删除最旧文件 - **下载**:列表中点击「下载」获取压缩包 PostgreSQL 模式下需服务器已安装 `pg_dump`(`apt install postgresql-client` 或完整 `postgresql` 包)。 --- ## 在新服务器恢复 ### 方式一:使用包内脚本(推荐) ```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 # SQLite:直接恢复 futures.db RESTORE_DIR=/opt/qihuo ./restore.sh # PostgreSQL:先配置 /opt/qihuo/.env 的 DATABASE_URL,再执行 export RESTORE_DIR=/opt/qihuo # 若 .env 在 RESTORE_DIR 下且含 DATABASE_URL,restore.sh 会自动 source ./restore.sh ``` 默认恢复到 **`/root/qihuo`**。若生产目录为 `/opt/qihuo`: ```bash RESTORE_DIR=/opt/qihuo ./restore.sh ``` ### 方式二:手工复制(SQLite) ```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/ pm2 restart qihuo ``` ### 方式三:手工导入(PostgreSQL) ```bash pm2 stop qihuo export DATABASE_URL=postgresql://qihuo:密码@127.0.0.1:5432/qihuo psql "$DATABASE_URL" -f postgres_dump.sql cp -a uploads/. /opt/qihuo/uploads/ pm2 restart qihuo ``` ### 恢复后检查清单 1. 已部署 qihuo 代码与 Python 虚拟环境(见 [DEPLOY.md](./DEPLOY.md)) 2. 已配置 `.env`(`DATABASE_URL` 或 SQLite、`SECRET_KEY`、CTP 账号等) 3. PostgreSQL:库已创建且 `DATABASE_URL` 可连接 4. 访问 Web 登录,检查交易记录、统计页是否正常 5. CTP 模式需在新环境重新连接柜台 --- ## 注意事项 - **恢复前务必停止 qihuo**,避免进程占用数据库导致覆盖不完整 - SQLite 备份使用 SQLite `backup` API,并在 WAL 模式下尝试 checkpoint - PostgreSQL 备份使用 `pg_dump`,恢复使用 `psql -f` - 自动备份在应用后台线程执行,与 Web 服务同进程 - 大体积 `uploads/` 会使压缩包变大,可按需定期清理无用截图 - 不要将含 `.env`、数据库的压缩包上传到公开网盘 --- ## 故障排查 | 现象 | 处理 | |------|------| | 设置页无备份列表 | 检查 `/root/qihuo_backup` 目录权限,进程需可写 | | 立即备份无反应 | 查看 PM2 日志;可能上一任务仍在进行 | | PostgreSQL 备份失败 | 安装 `postgresql-client`;检查 `DATABASE_URL` | | 下载 404 | 文件名须为系统生成的 `qihuo_backup_*.tar.gz` | | 恢复后无法登录 | 确认数据已导入实际使用的库(SQLite 文件或 PG) | | 恢复后 CTP 连不上 | 在新服务器配置正确的 `.env` CTP 参数 | --- ## 相关文档 - [POSTGRES.md](./POSTGRES.md) — PostgreSQL 一键部署、迁移、备份恢复 - [DEPLOY.md](./DEPLOY.md) — 部署与目录结构 - [FEATURES.md](./FEATURES.md) — 功能与路由一览