file - 通过计算每个文件的哈希值以外的技术在硬盘上查找重复文件

标签 file hash operating-system duplicate-removal duplicate-data

有一个硬盘,里面有很多文件,如何找出其中的重复文件。
我们可以做的第一件事是根据 FILE_SIZE 分隔文件。
然后我们可以使用某种算法(如 MD5)找到每个文件的哈希值,具有相同哈希值的文件将是重复的。

除了使用 FILE_SIZE 之外,谁能介绍一些其他方法来分离重复文件的候选者。也许使用文件头、扩展名或任何其他想法?

最佳答案

您可能希望使用多级比较,首先进行快速比较,以避免不必要地运行较慢的比较。建议:

  1. 比较文件长度。

  2. 然后比较文件的前1K字节。

  3. 然后比较文件的最后 1K 字节。 (文件的第一部分和最后一部分更有可能包含签名、内部校验和、修改数据等,它们会发生变化。)

  4. 比较文件的 CRC32 校验和。使用 CRC 而不是加密散列,除非您有需要关注的安全措施。 CRC 会快得多。

关于file - 通过计算每个文件的哈希值以外的技术在硬盘上查找重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18097930/

相关文章:

c - 文件内容不会读入结构

c++ - 文件中的字符检查始终返回 true

javascript - 如何防止在 $location 哈希搜索参数更改时创建新的 Controller 实例。

Linux上的C编程: which distro and tools to use

linux - 在重定向时,重定向的页面是否得到处理?

file - 用于 Java 的 LZ4 和 Zstd

javascript - 如何检测 js 文件在运行时是否被缩小 (Node.js)

php - 在登录时重新散列随机加盐的密码会增加安全性吗?

json - 一次从 Perl JSON 获取单个键值

operating-system - 内核代码与用户代码