Files
system-backu/README.md
T
publ 4e3a4b4602 feat: 数据备份管理系统 v0.1.0
带 Web 操作界面的备份系统,支持:
- 数据源:MySQL 数据库(mysqldump)、服务器目录(tar.gz)
- 存储目标:本地目录、S3 兼容对象存储(MinIO/Ceph/AWS S3)
- 触发方式:手动 + Cron 定时调度(APScheduler)
- 备份还原:MySQL 库、目录
- JWT 登录认证 + Fernet 字段加密
- 保留策略:按数量 + 按天数双重清理

技术栈:FastAPI + SQLAlchemy 2 + APScheduler + aioboto3;
前端 Vite + React 18 + TypeScript + Ant Design 5 + Zustand。
Docker Compose 一键起。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-22 18:27:41 +08:00

2.9 KiB
Raw Blame History

数据备份管理系统

一个带 Web 操作界面的备份系统,支持将 MySQL 数据库服务器目录 备份到 本地目录S3 兼容对象存储AWS S3 / MinIO / Ceph)。支持手动触发、Cron 定时调度、备份保留策略,以及从备份还原。

功能

  • 📦 多数据源MySQL 数据库(mysqldump)、服务器目录(tar.gz
  • ☁️ 多存储目标:本地目录、S3 兼容对象存储
  • Cron 定时调度:标准 cron 表达式
  • 🔁 备份还原:从备份恢复 MySQL 库 / 解压目录
  • 🗂️ 保留策略:保留最近 N 个 + 保留 N 天
  • 👤 JWT 登录认证:单用户/多用户管理后台
  • 📊 运行历史与日志:每次备份的执行详情、SHA256 校验、大小、耗时

技术栈

  • 后端Python 3.11、FastAPI、SQLAlchemy 2、APScheduler、boto3/aioboto3
  • 前端Vite + React 18 + TypeScript + Ant Design 5
  • 数据库SQLite(可平滑迁移 PostgreSQL
  • 部署Docker Compose

快速开始

1. 准备环境变量

cp .env.example .env
make keys   # 自动生成 SECRET_KEY 和 FERNET_KEY

或手动编辑 .env,至少填入以下三项:

SECRET_KEY=<openssl rand -hex 32>
FERNET_KEY=<python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())'>
INITIAL_ADMIN_PASSWORD=<your-strong-password>

2. 启动

make up

3. 首次使用

  1. 打开 http://localhost:5173,用 admin / INITIAL_ADMIN_PASSWORD 登录
  2. Storages → 新建一个存储目标(Local 路径或 S3 桶)
  3. Jobs → 新建 → 选择数据源类型(MySQL / 目录)→ 填写源信息 → 选存储目标 → 保存
  4. Job 列表点 Run Now 立即触发,或填写 cron_expression 启用定时调度

常用命令

make logs      # 查看后端日志
make restart   # 重启服务
make down      # 停止服务
make clean     # 停止并清理所有数据

项目结构

.
├── docker-compose.yml
├── .env.example
├── Makefile
├── backend/        # FastAPI 后端
└── frontend/       # React 前端

注意事项

  • ⚠️ 单实例部署:内置 APScheduler不要启动多个 backend 副本,否则会出现重复调度。多副本需要改造为分布式锁。
  • 🔐 敏感字段加密MySQL 密码和 S3 SecretKey 在数据库中以 Fernet 加密存储,前端永远看不到明文。
  • 💾 数据持久化:所有元数据在 backend-data 卷,本地备份在 local-backups 卷。删除前请先 make down 备份。
  • 🗄️ mysqldump 必须可用:备份 MySQL 时后端容器需能调用 mysqldump(官方镜像已安装)。

License

MIT