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

6qqygrtg  于 2023-02-18  发布在  Java
关注(0)|答案(3)|浏览(154)

我看到了这篇文章https://aws.amazon.com/blogs/developer/syncing-data-with-amazon-s3/,它让我意识到了uploadDirectory()方法。“这一小段代码将本地目录的内容与Amazon S3存储桶中的内容进行比较,并仅传输已更改的文件。”这似乎并不完全正确,因为它似乎总是传输给定目录中的每个文件,而不是仅传输已更改的文件。
我可以使用AWSCLI的s3 sync命令完成我想要的操作,但是我们的目标是使用Java SDK完成这种同步。是否可以使用Java SDK完成这种相同类型的同步?

cmssoen2

cmssoen21#

s3 sync命令没有SDK实现。如果需要,您必须在Java中实现它。根据CLI文档https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/sync.html
如果满足以下条件之一,则需要下载s3对象:

  • 本地目录中不存在s3对象。
  • s3对象的大小与本地文件的大小不同。
  • s3对象的上次修改时间早于本地文件的上次修改时间。

因此,基本上你需要比较目标桶中的对象与基于上述规则的本地文件。
还要注意,上面的检查不会处理--delete,因此如果需要,您可能需要实现在本地文件不存在时删除远程对象的逻辑。

nxowjjhe

nxowjjhe3#

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

相关问题