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

ebe*_*and 5 single-instance amazon-s3

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

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

Nik*_*bas 5

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

要上传文件:

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

要上传后续文件:

  1. 计算哈希值,仅上传数据blob文件(如果尚不存在).
  2. 使用散列作为内容保存目录条目,就像所有文件一样.

要读取文件:

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

您还可以通过上传固定大小的块中的文件来提高此技术的效率 - 并且如上所述,在块级而不是完整文件级别上进行重复数据删除.然后,虚拟文件​​系统中的每个文件都包含一个或多个哈希值,表示该文件的块链.这也具有以下优点:上传与另一个先前上载的文件仅略有不同的大文件将涉及更少的存储和数据传输.