这是什么

备份硬盘、移动盘里的资料时,常见痛点是:

  • 拷完了不知道有没有拷坏
  • 哪些文件已经纳入「要管」的清单不清楚
  • 大批量文件时全量算哈希太慢
  • 移动硬盘长时间不通电存放后再接上使用,介质可能已发生静默损坏(文件还在、大小也正常,但内容已坏),单靠打开文件很难发现,需要对照事先登记的校验值做完整性核对

DataVault(数据管理) 就是为此做的 Windows 桌面工具:用资源管理器方式浏览本机磁盘,把「受控登记 → 批次备份 → 校验」串在一条工作流里。平时把盘标记为受控并建好索引;归档盘、冷备盘过一段时间再启用时,跑完整或快速校验,按通过 / 失败 / 缺失 / 错误标出已经对不上的数据。

源码:https://github.com/82488059/DataVault

技术栈:Tauri 2 + Vue 3 + TypeScript + Rust。

能做什么

浏览与受控

  • 浏览盘符 / 文件夹 / 文件,列包括:名称 / 大小 / 受控 / 数量
  • 在盘符根 标记为受控(盘根生成 .datavault)
  • 建立备份索引:勾选路径后登记受控文件(跳过已受控,避免重复算哈希)

备份

  • 按批次备份到目标目录,写入批次元数据(可自定义批次名)
  • 高级备份(独立窗口):左右双栏选源/目标;文件名正则匹配或排除;可选 打包为 tar(目标为受控盘时自动登记归档)

校验

  • 完整校验:整文件 MD5
  • 快速校验:FastMD5(默认每 100MB 块取前 10% 再汇总)
  • 结果四态:通过 / 失败 / 缺失 / 错误,可按状态筛选
  • 主窗口下方有 多任务状态面板,长任务异步跑,不卡界面;也可开 高级校验 独立窗

大致用法

  1. 打开应用,进入要管理的盘,在盘符根执行「标记为受控」
  2. 勾选需要纳入管理的文件/目录,点「建立备份索引」
  3. 选择备份目标,执行批次备份(或打开高级备份做过滤 / tar 打包)
  4. 之后用完整或快速校验核对源与备份是否一致

本地开发(需 Node.js、Rust、Windows 上 WebView2 + VS2022 MSVC):

1
2
3
cd DataVault
npm install
npm run tauri dev

生产构建可用 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 打包和正则过滤给进阶场景。

仓库与文档:

有问题或功能建议,欢迎在仓库提 Issue。