仅当 S3 文件发生更改时,如何下载它?

Zty*_*tyx 5 amazon-s3 aws-sdk aws-java-sdk

我有一个 900 MB 的文件,如果尚未下载到位,我想将其从 S3 下载到磁盘。如果文件尚未就位,是否有一种简单的方法可以让我仅下载文件?我知道 S3 支持查询文件的 MD5 校验和,但我希望不必自己构建这个逻辑。

juz*_*aai 5

您可以使用 AWS CLI 的s3 sync命令

同步目录和 S3 前缀。递归地将新的和更新的文件从源目录复制到目标。

根据此论坛帖子,您只能使用sync同步一个文件:

aws s3 sync s3://bucket/path/ local/path/ --exclude "*" --include "File.txt"
Run Code Online (Sandbox Code Playgroud)

它说:同步给定的路径,排除所有文件,但包括"File.txt"- 所以它只会"File.txt"在那些给定的路径下同步。


或者使用 Java SDK:

根据javadoc,有一种getObjectMetadata方法可以返回有关 S3 对象(文件)的信息,而无需下载其内容。

该方法返回一个ObjectMetadata对象,它可以为您提供一些有用的信息:

获取 Last-Modified 标头的值,指示Amazon S3上次记录对关联对象的修改日期和时间

根据 RFC 1864获取关联对象(内容 - 不包括标头)的base64 编码的 128 位 MD5 摘要

根据 RFC 1864获取关联对象的十六进制编码 128 位 MD5 摘要