使用Java的云中的重复数据删除

时间:2019-06-05 15:23:07

标签: java hash duplicates

我正在尝试使用Java在云中实现重复数据删除程序。

我不确定如何进行实施。

首先,我想对文件大小,日期和文件名进行一个简单的文件比较。但是,这是无效的,因为文件的内容可能相同,但名称不同。

我决定采用一种简单的算法 文件上传->文件分块-> Rabin-karp哈希->确定是否可以上传文件。

这会很好还是有任何改进?

在哪里可以找到更多有关此的信息?我曾尝试环顾互联网,但找不到任何东西。大部分只是分解为某些实现,但没有解释或文件分块或Rabin-karp哈希的详细信息。

我想知道有关该程序的Java库。

1 个答案:

答案 0 :(得分:0)

如果陈述您的问题约束,会更容易。假设以下内容:

  • 最小的不可分割的数据单位是文件
  • 文件很小,可以容纳在内存中以计算哈希值
  • 您的文件位于某个云存储桶中,或者可以在其中列出所有文件。同样,这消除了相同的文件名。

您可能可以缩小问题范围。

  1. 使用某种快速哈希算法(如基本的CRC校验和)遍历所有文件中的所有文件并构建映射。 (可以轻松并行化。)
  2. 过滤掉所有有冲突的文件。您可以轻松地删除其余文件,出于所有实际目的,这些文件应该是相当合理的数据块。
  3. 使用密码哈希(或最坏的情况,匹配整个文件)遍历文件的其余部分,并确定匹配项。

这可以根据基础数据进行细化。

但是,这就是我要解决这个问题并给出其结构的方式;这个问题可以很容易地以并行方式进行划分和解决。随时详细说明,以便我们能找到一个好的解决方案。