【问题标题】:Not storing duplicate files with AWS Versioning不使用 AWS 版本控制存储重复文件
【发布时间】:2021-03-16 19:35:18
【问题描述】:

我正在尝试将大量文件上传到 AWS s3 存储桶。我还需要启用文件版本控制以进行备份,以防某些文件被意外覆盖。

但是,当我上传已经存在的完全相同的文件时,当前启用了 AWS s3 版本控制,aws 存储了完全相同文件的两个版本。这是一个问题,因为我将多次上传同一个文件,在这种情况下,我希望不使用版本控制来防止由于存储同一对象的多个版本而产生过多的数据费用。但是,如果对文件进行了更改,那么我希望使用 aws 版本控制。

有没有办法配置 aws s3 存储桶版本控制,以便忽略重复的上传文件但已更改或新文件已激活版本控制? (如果有帮助,我用来执行此操作的脚本使用 python 和 awscli)

【问题讨论】:

  • S3 不会为您执行此操作(例如,如果您的文件是 3TB 怎么办?)因此,请构建一个解决方案,为每个上传的文件维护校验和,并在上传之前进行比较。

标签: python-3.x amazon-web-services amazon-s3 aws-cli versioning


【解决方案1】:

S3 本身并不支持这一点。如果您一遍又一遍地上传相同的文件,则会添加一个新版本。

根据您的使用案例,如果使用 AWS CLI,您可以在使用 aws s3 sync 命令时添加 --size-only 标志。

根据文档添加此选项:

使每个密钥的大小成为用于决定是否从源同步到目标的唯一标准。

所以它只会在文件的大小发生变化时将文件复制到 S3。

这可能适用于您的用例,也可能不适用,因为它只考虑大小,因此请务必考虑到这一点

【讨论】:

  • 这不是一个好的解决方案 - 当内容发生变化时,大小可能保持不变。更好地对文件进行哈希处理并比较哈希值。
  • 答案中澄清了这一点。请提供更好的解决方案
  • 您可以使用名为 s3.listObjectVersions 的东西,它提供了大量属性来检查文件元数据的真实性和其他功能。
猜你喜欢
  • 2014-06-15
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多