使用Java SDK for AWS S3,我需要将一个s3前缀下的每个对象复制到另一个s3前缀,以便$prefix_1
中的文件:
$prefix_1/key_remainder_1
$prefix_1/key_remainder_2
$prefix_1/key_remainder_3
被复制到$prefix_2
,因此看起来像:
$prefix_2/key_remainder_1
$prefix_2/key_remainder_2
$prefix_2/key_remainder_3
使用aws cli,我可以使用aws s3 sync $bucket/$prefix1 $bucket/$prefix2
来完成此操作。一目了然,sync
本质上是一个LIST,后面跟着一堆生成的COPY。但是,java sdk似乎不支持将文件从一个前缀复制到另一个前缀的一次性方法(即单个命令/方法,如sync
)。
无论出于何种原因,TransferManager
可以在s3和磁盘之间进行批量复制,但不能在s3和s3之间进行批量复制。
显然,我要么
LIST
前缀下的所有对象,然后运行一堆单独的COPY
s TransferManager
首先从源前缀下载所有内容到磁盘,然后将本地目录上传到目标前缀。我错过了什么吗?有没有办法使用java SDK获得我想要的东西?