快速获取大型嵌套目录中所有文件的校验和的方法

快速获取大型嵌套目录中所有文件的校验和的方法

我们有一个要求,就是对用户上传的内容进行筛选。然而,我注意到我们大部分用户上传的内容实际上源自我们自己的系统:例如,有人从我们的文档库下载了 pdf,将其重命名为其他名称以满足他们的需要,然后将其重新上传到他们的“自定义内容”部分,该部分可以与其他用户共享。

我想将这些文件标记为可信,而无需有人实际查看它们,并且我认为我可以使用文件大小和某种校验和来做到这一点。例如

  • 对于给定的新文件
    • 在我们的资源库文件夹中找到具有相同文件扩展名和相同文件大小的所有文件
    • 对于所有具有相同扩展名和大小的文件,进行某种校验和比较。
    • 如果我们找到匹配项,则将新文件声明为可信文件。

现在,我们的资源库目录有 132 GB——相当大。因此,任何涉及查看其中每个文件(甚至具有相同扩展名的每个文件)的解决方案都会非常慢。

似乎明智的做法是保留某种文件校验和数据库(不一定使用文字 DBMS),当内容更改时会自动更新,或者可能只是每天使用调度程序运行一次。然后,对于任何给定的新文件,我可以获得校验和并在数据库中查找它。

感觉这一定是一个已解决的问题。有人有什么想法吗?

谢谢,马克斯

答案1

你可以看看文件完整性监控软件。

基本上,这些旨在检测文件系统中 rootkit 的引入,但其核心是一个包含元信息(校验和、哈希)的文件数据库,并监视在一组目录下已更改或添加的文件,这就是您想要的。

我听说过的最古老的一个是绊线但创建了一个开源版本,称为 助手。最近的一个是 OSSEC推荐自https://serverfault.com/questions/141800/recommend-alternative-to-tripwire

答案2

这可能是一个已解决的问题,但它太具体了,在 Unix/Linux 世界中没有任何标准工具。你的问题包含了答案的很大一部分。您需要一个数据库,或者更准确地说,您需要一个指数校验和。您还需要一个组件来根据该索引添加、更新和检查新文件。我认为您必须自己实现它,并且实现的自然位置将在上传机制中(例如网页)。

相关内容