在Amazon S3中实现重复数据删除文件存储的方法?

时间:2011-09-14 01:06:17

标签: amazon-s3 single-instance

我想知道在Amazon S3中实现重复数据删除(单实例存储)文件存储的最佳方法。例如,如果我有3个相同的文件,我只想存储一次文件。有没有图书馆,API或程序来帮助实现这个?这个功能本身存在于S3中吗?也许是检查文件哈希等的东西

我想知道人们用什么方法来实现这个目标。

1 个答案:

答案 0 :(得分:5)

你可能会推出自己的解决方案来做到这一点。有点像:

上传文件:

  1. 首先使用SHA-1或更强大的方式散列文件。
  2. 使用哈希命名文件。请勿使用实际的文件名。
  3. 创建一个类别的虚拟文件系统以保存目录结构 - 每个文件可以只是一个包含计算的哈希的文本文件。这个'文件系统'应与数据blob存储分开放置,以防止名称冲突 - 例如在单独的存储桶中。
  4. 上传后续文件:

    1. 计算哈希值,只有在数据blob文件不存在的情况下才上传。
    2. 使用哈希作为内容保存目录条目,就像所有文件一样。
    3. 阅读文件:

      1. 从虚拟文件系统中打开文件以发现哈希值,然后使用该信息获取实际文件。
      2. 您还可以通过上传固定大小的块中的文件来提高此技术的效率 - 并且如上所述,在块级而不是完整文件级别上进行重复数据删除。然后,虚拟文件​​系统中的每个文件都包含一个或多个哈希值,表示该文件的块链。这也有一个好处,即上传一个与之前上传的另一个文件略有不同的大文件,可以减少存储和数据传输。