5

我想知道在 Amazon S3 中实现重复数据删除(单实例存储)文件存储的最佳方式。例如,如果我有 3 个相同的文件,我只想存储一次文件。是否有库、api 或程序来帮助实现这一点?此功能是否本机存在于 S3 中?也许检查文件哈希等的东西。

我想知道人们使用什么方法来实现这一点。

4

1 回答 1

5

您可能会推出自己的解决方案来做到这一点。类似于以下内容:

要上传文件:

  1. 首先使用 SHA-1 或更强的哈希文件。
  2. 使用哈希来命名文件。不要使用实际的文件名。
  3. 创建各种虚拟文件系统以保存目录结构 - 每个文件都可以简单地是包含计算哈希的文本文件。此“文件系统”应与数据 blob 存储分开放置,以防止名称冲突 - 就像在单独的存储桶中一样。

上传后续文件:

  1. 计算哈希值,如果数据 blob 文件不存在,则仅上传它。
  2. 将带有哈希的目录条目保存为内容,就像所有文件一样。

要读取文件:

  1. 从虚拟文件系统打开文件以发现哈希,然后使用该信息获取实际文件。

您还可以通过以固定大小的块上传文件来提高此技术的效率 - 并如上所述在块级别而不是完整文件级别进行重复数据删除。然后,虚拟文件​​系统中的每个文件都将包含一个或多个哈希值,代表该文件的块链。这样做还有一个好处,即上传一个与之前上传的文件略有不同的大文件将涉及更少的存储和数据传输。

于 2012-05-31T18:48:29.227 回答