如何使用 Java SDK 将目录与 AWS S3 同步?

Posted

技术标签:

【中文标题】如何使用 Java SDK 将目录与 AWS S3 同步?【英文标题】:How to sync directory with AWS S3 using Java SDK? 【发布时间】:2017-04-15 08:38:39 【问题描述】:

我看到这篇文章https://aws.amazon.com/blogs/developer/syncing-data-with-amazon-s3/ 让我知道了uploadDirectory() 方法。该博客指出:“这段代码将本地目录的内容与 Amazon S3 存储桶中的内容进行比较,并且只传输已更改的文件。”这似乎并不完全正确,因为它似乎总是传输给定目录中的每个文件,而不是只传输已更改的文件。

我能够使用 AWSCLI 的 s3 同步命令执行我想要的操作,但目标是能够使用 Java 开发工具包执行此同步。是否可以使用 Java SDK 进行相同类型的同步?

【问题讨论】:

【参考方案1】:

我找到了,是TransferManage.uploadDirectory()

【讨论】:

能否请您edit 回答并添加指向此函数文档的链接?这会很有帮助。谢谢! TransferManage.uploadDirectory 似乎没有像 CLI 工具那样提供与执行同步相关的任何功能。最好让您的 Java 应用程序使用 AWS 凭证作为环境变量启动一个子进程,并像在命令行上一样调用 CLI 工具。 这不同步。它会上传。【参考方案2】:

TransferManager.copy() 可能会做类似的事情,但我不知道在目标服务器上存在具有相同名称和修改时间的文件或目录时会采用什么行为。

【讨论】:

以上是关于如何使用 Java SDK 将目录与 AWS S3 同步?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用aws java sdk将文件从S3存储桶从一个区域复制到另一个区域?

如何使用 aws-java-sdk 从 S3 逐块读取文件

如何使用 IAM 角色通过 aws sdk (java) 从 ECS 容器调用 s3 存储桶

如何使用aws-java-sdk从S3读取块的文件块

如何将 Java OutputStream 上传到 AWS S3

使用 S3 Java SDK 与 S3 兼容存储通信 (minio)