直接回答

高效检测重复文件采用多级过滤:先按文件大小分组,大小不同必然不重复;同组内再比较部分哈希(如前 4KB 的 MD5/SHA-1);候选文件再做完整内容哈希或逐字节比对确认。这样绝大多数文件只需读一次元数据和一小段内容。

展开解析

为什么不直接全量哈希:磁盘 I/O 是瓶颈,大小过滤几乎零成本就能淘汰绝大多数文件。部分哈希用内容前缀(或头中尾三段采样)进一步缩小候选集。最终确认阶段,若信任哈希可只算完整 SHA-256;要求绝对正确则对候选逐字节 cmp,因为理论上存在碰撞。工程细节:用小文件阈值(小于某尺寸直接全读)、多线程/异步 I/O 并行处理不同磁盘文件、硬链接或 reflink 去重落地。追问方向:海量小文件时 inode/元数据开销、误报率与哈希长度关系、近似重复(如图片)需感知哈希 pHash 而非加密哈希。