存储文件的校验和或类似内容,以便轻松说明它是否与另一个文件相同

时间:2014-12-18 15:41:59

标签: ruby-on-rails ruby linux file

在我们的应用程序中,我们有一个名为support_files的表,用于存储已上载的文档,这些文档主要是PDF文件。

我想获得这些文件的唯一列表,通常会多次上传同一个文件。我认为这样做的一种方法是在数据库中添加一个名为" checksum"的列,然后,对于每个文件,以某种方式计算校验和并将其存储在列中。 (这显然是缓慢的部分)。

完成此操作后,我可以通过检查校验和列轻松过滤掉表中的重复项。

任何人都可以推荐一种方法来生成这个校验和/哈希/其他什么?理想情况下,我希望生成一个大小足以保证唯一性的哈希/校验和,但小到足以适应我数据库中的字符串字段。

我的服务器在Ubuntu服务器上运行,我需要校验和的文件总数目前约为12,000。为了论证,假设它不会超过100,000。

一些谷歌搜索显示sha1sum,但这可能更适合告诉文件是否被意外更改而不是两个文件不同?

1 个答案:

答案 0 :(得分:1)

看看Digest::SHA256,它可以直接与文件连接,效果很好。

参考文献:

p Digest::SHA256.file("X11R6.8.2-src.tar.bz2").hexdigest
# => "f02e3c85572dc9ad7cb77c2a638e3be24cc1b5bea9fdbb0b0299c9668475c534"

``