目标
构建遍历目录、按尺寸分组、用部分哈希消歧、最后全量 SHA-256 确认的重复文件查找工具,输出含可回收字节的报告,并可选删除、硬链接合并或移入内容寻址存储。
要点
分段策略让大媒体库几乎不读全量字节——字节计数测试断言总读取量证明层级真生效;硬链接动作先改名备份再建链再删备份,崩溃留下的备份文件就是恢复记录;跨设备硬链接以设备号检查直接拒绝。
提示
dry-run 是默认模式,JSON 报告是评审对象也是监控可告警的产物(可回收字节趋势)。
验证
actor 测试在真实临时树上以 inode 层面验证硬链接;store 模式的撤销日志可恢复原始布局。 项目目录骨架:
dedupe/
├── bin/dedupe.js
├── src/
│ ├── walk.js
│ ├── pipeline.js
│ ├── hash.js
│ └── actors/
│ ├── report.js
│ ├── link.js
│ └── store.js
├── test/
│ ├── pipeline.test.js
│ └── actors.test.js
└── package.json
实施阶段:Lazy walker → Staged hash pipeline → Report and link actors → Content-addressed store actor。