Restic GUI 是一个基于 Qt 5.14 开发的跨平台图形化界面程序,为强大的开源备份工具 restic 提供友好易用的操作界面。
核心特性:
- ✅ 向导式操作流程,降低使用门槛
- ✅ 支持多种后端(本地、SFTP、S3、REST等)
- ✅ 完整的备份、恢复、快照管理功能
- ✅ 定时备份任务,自动化保护数据
- ✅ 直观的数据统计和趋势分析
- ✅ 跨平台支持(Windows、Linux、macOS)
- ✅ 完全免费开源
本项目包含完整的设计文档,为开发提供全方位指导:
| 文档 | 描述 | 路径 |
|---|---|---|
| 需求规格说明书 | 详细的功能性和非功能性需求 | docs/需求规格说明书.md |
| 概要设计文档 | 系统架构、模块划分、技术选型 | docs/概要设计文档.md |
| 详细设计文档 | 所有类的详细接口和实现设计 | docs/详细设计文档.md |
| 数据库设计文档 | SQLite数据库schema设计 | docs/数据库设计文档.md |
| 界面原型设计文档 | 所有界面的原型和交互设计 | docs/界面原型设计文档.md |
项目中包含 restic 官方文档(restic_doc/ 目录),涵盖:
- 安装指南
- 备份、恢复操作
- 仓库管理
- 各种后端配置
- 常见问题解答
当前版本: v1.1 开发状态: ✅ 核心功能已全部实现,项目可编译运行 代码规模: 79个文件,约14,815行代码 最后更新: 2025-10-26
- 开发框架: Qt 5.14
- 编程语言: C++ 17
- 数据库: SQLite 3
- 构建工具: qmake(项目使用qmake,不使用CMake)
- UI设计: Qt Designer .ui 文件(10个)+ 纯代码(向导和自定义控件)
- 依赖工具: restic (需单独安装) 版本 0.18.1 compiled with go1.25.1 on windows/amd64
- 备份进度实时显示 - 手动执行备份时显示实时进度对话框,包含进度条、当前文件、详细日志
- 定时备份后台运行 - 定时任务执行时在后台静默运行,不打扰用户
- 快照信息自动获取 - 仓库快照数和大小自动从restic获取并显示
- 备份参数增强 - 支持排除规则(--exclude)和自定义标签
- 密码管理增强 - 完整的密码输入对话框,支持显示/隐藏密码
- 向导式任务创建 - 创建备份任务使用向导界面,步骤清晰易用
- 优化所有页面布局和交互体验
- 增强统计页面功能和数据展示
- 改进快照管理和数据恢复界面
- 修复输入密码后界面卡顿问题
- 修复快照总数统计错误
- 修复备份标签功能异常
Restic GUI 采用三层架构:
┌─────────────────────────────────────────┐
│ 表现层(UI Layer) │
│ - MainWindow │
│ - Wizards (向导) │
│ - Dialogs (对话框) │
└─────────────────────────────────────────┘
↕
┌─────────────────────────────────────────┐
│ 业务逻辑层(Business Layer) │
│ - ResticWrapper (restic封装) │
│ - RepositoryManager (仓库管理) │
│ - BackupManager (备份管理) │
│ - RestoreManager (恢复管理) │
│ - SnapshotManager (快照管理) │
│ - SchedulerManager (任务调度) │
└─────────────────────────────────────────┘
↕
┌─────────────────────────────────────────┐
│ 数据访问层(Data Layer) │
│ - DatabaseManager (数据库) │
│ - ConfigManager (配置) │
│ - PasswordManager (密码管理) │
└─────────────────────────────────────────┘
- 创建本地或远程仓库
- 连接已有仓库
- 管理多个仓库
- 仓库完整性检查
- 创建备份任务(支持多路径、排除规则)
- 手动执行备份
- 定时自动备份
- 备份历史记录
- 浏览所有快照
- 查看快照详情
- 删除旧快照
- 清理仓库(prune)
- 管理快照标签
- 浏览快照文件树
- 搜索文件
- 选择性恢复
- 恢复向导
- 仓库统计信息
- 备份趋势分析
- 存储空间分析
- 去重效率统计
-
安装 Qt 5.14
- Windows: 下载 Qt 安装程序
- Linux:
sudo apt install qt5-default qttools5-dev - macOS:
brew install qt@5
-
安装 restic
- 从 restic官网 下载对应平台的可执行文件
- 或使用包管理器:
- Linux:
sudo apt install restic - macOS:
brew install restic
- Linux:
使用 qmake(推荐):
# Windows (cmd)
qmake restic-gui.pro
nmake # MSVC编译器
# 或 mingw32-make # MinGW编译器
# Linux/macOS
qmake restic-gui.pro
make或使用 Qt Creator(Windows 推荐):
- 打开
restic-gui.pro文件 - 配置项目(选择 MSVC 或 MinGW kit)
- 点击构建(Ctrl+B)
- 运行(Ctrl+R)
构建成功后,可执行文件位于:
- Windows:
bin/restic-gui.exe - Linux/macOS:
bin/restic-gui
# Windows
bin\restic-gui.exe
# Linux/macOS
./bin/restic-gui- 需求规格说明书
- 概要设计文档
- 详细设计文档
- 数据库设计文档
- 界面原型设计
- 创建 Qt 项目结构
- 配置构建系统(qmake)
- 创建基础类框架
- 设置资源文件和翻译
- UI 转换为 Qt Designer .ui 文件
- 仓库管理模块(RepositoryManager)
- 备份功能模块(BackupManager)
- 恢复功能模块(RestoreManager)
- 快照管理模块(SnapshotManager)
- 定时备份模块(SchedulerManager)
- ResticWrapper(restic CLI 完整封装)
- 数据访问层(DatabaseManager、ConfigManager、PasswordManager、CacheManager)
- 工具类(Logger、CryptoUtil、FileSystemUtil、NetworkUtil)
- 数据模型(8个结构体)
- 主窗口和6个页面(全部使用.ui文件)
- 对话框(使用.ui文件)
- ProgressDialog - 进度对话框(实时进度、日志输出)
- SettingsDialog - 设置对话框
- PruneOptionsDialog - 清理选项对话框
- 对话框(纯代码实现)
- CreateTaskDialog - 创建备份任务对话框(向导式)
- PasswordDialog - 密码输入对话框
- SnapshotBrowserDialog - 快照浏览对话框
- 向导(CreateRepoWizard,5步向导;RestoreWizard,恢复向导)
- 自定义控件(FileTreeWidget、SnapshotListWidget)
- 单元测试
- 集成测试
- 性能优化
- Bug 修复
- 用户体验优化
- 打包安装程序
- 编写用户手册
- 发布 v1.0
restic-gui/
├── docs/ # 设计文档
│ ├── 需求规格说明书.md (v1.1)
│ ├── 概要设计文档.md (v1.1)
│ ├── 详细设计文档.md (v1.1)
│ ├── 数据库设计文档.md (v1.1)
│ └── 界面原型设计文档.md (v1.1)
├── restic_doc/ # restic官方文档
├── src/ # 源代码(79个文件,~14,815行)
│ ├── main.cpp # 程序入口
│ ├── core/ # 核心业务逻辑(6个管理器)
│ │ ├── ResticWrapper.h/cpp
│ │ ├── RepositoryManager.h/cpp
│ │ ├── BackupManager.h/cpp
│ │ ├── RestoreManager.h/cpp
│ │ ├── SnapshotManager.h/cpp
│ │ └── SchedulerManager.h/cpp
│ ├── ui/ # 界面层
│ │ ├── MainWindow.h/cpp/.ui
│ │ ├── pages/ # 6个页面(.ui文件)
│ │ ├── wizards/ # 向导(纯代码)
│ │ ├── dialogs/ # 对话框(.ui文件为主)
│ │ └── widgets/ # 自定义控件(纯代码)
│ ├── models/ # 数据模型(8个结构体)
│ ├── data/ # 数据访问层(4个管理器)
│ └── utils/ # 工具类(4个工具类)
├── resources/ # 资源文件
│ ├── restic-gui.qrc # 资源清单
│ ├── icons/ # 图标
│ ├── sql/ # 数据库脚本
│ ├── styles/ # 样式表
│ └── translations/ # 翻译文件
├── build/ # 构建输出(自动生成)
│ ├── obj/, moc/, ui/, rcc/
├── bin/ # 可执行文件输出
│ └── restic-gui.exe
├── restic-gui.pro # qmake配置文件
├── CLAUDE.md # Claude项目指导
├── UI_CONVERSION_COMPLETE.md # UI转换完成报告
└── README.md # 本文件
详细文件统计:
- 头文件 (.h):40 个
- 实现文件 (.cpp):39 个
- UI文件 (.ui):10 个(1个主窗口 + 6个页面 + 3个对话框)
欢迎贡献代码、报告问题或提出建议!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 遵循 Qt 编码规范
- 类名使用 PascalCase
- 成员变量使用 m_ 前缀
- 函数名使用 camelCase
- 注释使用 Doxygen 格式
本项目采用 MIT 许可证 - 详见 LICENSE 文件
Restic 采用 BSD 2-Clause 许可证
- 项目主页:https://github.com/yourname/restic-gui
- 问题反馈:https://github.com/yourname/restic-gui/issues
- 邮箱:yourname@example.com
开发状态: ✅ 核心功能已全部实现,项目可编译运行
版本: v1.1
最后更新: 2025-10-24