DataVault:桌面端数据备份与校验工具
这是什么
备份硬盘、移动盘里的资料时,常见痛点是:
- 拷完了不知道有没有拷坏
- 哪些文件已经纳入「要管」的清单不清楚
- 大批量文件时全量算哈希太慢
- 移动硬盘长时间不通电存放后再接上使用,介质可能已发生静默损坏(文件还在、大小也正常,但内容已坏),单靠打开文件很难发现,需要对照事先登记的校验值做完整性核对
DataVault(数据管理) 就是为此做的 Windows 桌面工具:用资源管理器方式浏览本机磁盘,把「受控登记 → 批次备份 → 校验」串在一条工作流里。平时把盘标记为受控并建好索引;归档盘、冷备盘过一段时间再启用时,跑完整或快速校验,按通过 / 失败 / 缺失 / 错误标出已经对不上的数据。
源码:https://github.com/82488059/DataVault
技术栈:Tauri 2 + Vue 3 + TypeScript + Rust。
能做什么
浏览与受控
- 浏览盘符 / 文件夹 / 文件,列包括:名称 / 大小 / 受控 / 数量
- 在盘符根 标记为受控(盘根生成
.datavault) - 建立备份索引:勾选路径后登记受控文件(跳过已受控,避免重复算哈希)
备份
- 按批次备份到目标目录,写入批次元数据(可自定义批次名)
- 高级备份(独立窗口):左右双栏选源/目标;文件名正则匹配或排除;可选 打包为 tar(目标为受控盘时自动登记归档)
校验
- 完整校验:整文件 MD5
- 快速校验:FastMD5(默认每 100MB 块取前 10% 再汇总)
- 结果四态:通过 / 失败 / 缺失 / 错误,可按状态筛选
- 主窗口下方有 多任务状态面板,长任务异步跑,不卡界面;也可开 高级校验 独立窗
大致用法
- 打开应用,进入要管理的盘,在盘符根执行「标记为受控」
- 勾选需要纳入管理的文件/目录,点「建立备份索引」
- 选择备份目标,执行批次备份(或打开高级备份做过滤 / tar 打包)
- 之后用完整或快速校验核对源与备份是否一致
本地开发(需 Node.js、Rust、Windows 上 WebView2 + VS2022 MSVC):
1 | cd DataVault |
生产构建可用 npm run tauri build;打包可按 MSI/NSIS → zip → 仅 exe 依次回退。
技术要点(简)
为什么用 Tauri
前端用熟悉的 Vue 做资源管理器 UI,重活(读盘、拷贝、哈希)放在 Rust 侧,体积和内存比整包 Electron 更轻,也方便做多窗口(主窗 / 高级校验 / 高级备份)。
元数据放哪
| 位置 | 内容 |
|---|---|
盘根 .datavault/disk.json |
标识受控盘 |
盘根 .datavault/vault.db |
SQLite,受控文件清单等 |
应用数据 metadata/batches/ |
批次元数据 |
备份目标旁 .datavault/<批次ID>.json |
该次备份旁路记录 |
界面不展示 .datavault 目录本身,避免误操作元数据。
完整 MD5 与 FastMD5
- 完整 MD5:整文件标准 MD5,32 位小写十六进制,适合最终确认。
- FastMD5:按块采样(默认块 100MB、取前 10%,含余块),速度更快,适合日常抽查;不能替代完整校验的严格性。
早期「头尾 64KiB + 文件大小」的抽样方案已废弃,当前受控校验不再使用。
高级备份里的正则
支持裸 Rust 正则(如 \.pdf$),也支持 JS 风格 /pattern/flags(常用 i/m/s/x)。可对源文件名做「只备份匹配项」或「排除匹配项」。
小结
DataVault 把「哪些文件归我管、拷到哪、怎么验」收成一个桌面工具:受控盘 + 索引 + 批次备份 + 双模式校验,并保留 tar 打包和正则过滤给进阶场景。
仓库与文档:
- GitHub:https://github.com/82488059/DataVault
- 项目内还有更细的概览、需求与架构说明(
docs/)
有问题或功能建议,欢迎在仓库提 Issue。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 火苗的博客!




