S3 - 比较两个存储桶之间的文件

3
我希望比较两个S3兼容存储桶中文件的内容,并找出缺失或不同的文件。
我应该使用校验和来完成它吗?

我们很乐意提供帮助,但是很遗憾从你的问题中并不清楚你想要做什么。请随意编辑你的问题并添加更多信息。关于如何提问的提示,请参见:如何提出一个好问题? - John Rotenstein
我在考虑比较两个兼容S3的存储桶的文件内容,并返回缺失或不同的文件。我应该使用校验和来代替吗? - meitale
1个回答

2
看起来您的要求是比较两个Amazon S3存储桶的内容,并识别在这两个存储桶之间缺失或不同的文件。
为了实现这一点,您可以使用以下方法:
  • 对象名称:当然,这将有助于查找丢失的文件
  • 对象大小:不同的大小表示不同的内容,并且每个存储桶列表都给出了大小。
  • eTag:eTag是对象内容的MD5校验和。如果相同的文件具有不同的eTag,则内容不同。
  • 创建日期:这实际上不是一种可靠的识别差异的方法,但它可以与其他元数据一起使用,以确定是否要更新文件。例如,如果两个文件不同,目标存储桶中的对象比源存储桶中的对象具有更新的日期,那么您可能不需要复制该文件。但是,如果源文件在目标文件之后修改,则很可能需要重新复制。

你可以使用 AWS 命令行界面 (CLI),而不是自己进行所有上述逻辑。它有一个aws s3 sync命令,它将比较源和目标文件,并复制已修改或缺失的文件。


我能用Python的boto3来做吗?在所有在线脚本中,我看到每个人都在使用boto而不是boto3。 - meitale
boto3是当前和首选版本。 - John Rotenstein
我正在阅读AWS CLI,但不确定如何在Python中使用它。我在Google上查看了所有选项,似乎没有人将S3中的存储桶与Python进行比较。你能给我一个运行示例吗? - meitale
如果你正在编写Python代码,那么你应该使用boto3 SDK。AWS CLI用于从命令行使用,例如手动命令或shell脚本。(事实上,CLI是用Python编写的,并且使用了boto3自身!)因此,请检查aws s3 sync命令是否适合您的需求。如果不是,您可能需要编写自己的代码来完成所需的任务。 - John Rotenstein
eTag并不总是MD5校验和,因此其值不同并不一定意味着文件内容不同。https://stackoverflow.com/questions/53882724/aws-s3-etag-not-matching-md5-after-kms-encryption - Bushrod
我推断用户并不打算复制内容。 - nf071590

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接