在我们的应用程序中,我们有一个名为support_files
的表,用于存储已上载的文档,这些文档主要是PDF文件。
我想获得这些文件的唯一列表,通常会多次上传同一个文件。我认为这样做的一种方法是在数据库中添加一个名为" checksum"的列,然后,对于每个文件,以某种方式计算校验和并将其存储在列中。 (这显然是缓慢的部分)。
完成此操作后,我可以通过检查校验和列轻松过滤掉表中的重复项。
任何人都可以推荐一种方法来生成这个校验和/哈希/其他什么?理想情况下,我希望生成一个大小足以保证唯一性的哈希/校验和,但小到足以适应我数据库中的字符串字段。
我的服务器在Ubuntu服务器上运行,我需要校验和的文件总数目前约为12,000。为了论证,假设它不会超过100,000。
一些谷歌搜索显示sha1sum
,但这可能更适合告诉文件是否被意外更改而不是两个文件不同?
答案 0 :(得分:1)
看看Digest::SHA256,它可以直接与文件连接,效果很好。
参考文献:
p Digest::SHA256.file("X11R6.8.2-src.tar.bz2").hexdigest
# => "f02e3c85572dc9ad7cb77c2a638e3be24cc1b5bea9fdbb0b0299c9668475c534"
``