首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在亚马逊网络服务S3上批量移动文件

在亚马逊网络服务S3上批量移动文件
EN

Stack Overflow用户
提问于 2020-12-24 03:19:53
回答 2查看 566关注 0票数 0

我有一个S3存储桶,它的目录结构包含输入和输出文件夹。使用使用java API与S3通信的工具将文件存储在输入目录中,但在将文件从输入目录移动到输出目录的情况下,我们需要使用其他替代方案(即使它是我们实现的java类)。

我需要知道的是,在给定要移动的文件列表的情况下,是否可以批量移动文件,而不必逐个文件地调用unix s3 cli中的mv命令,这似乎非常慢。我用java检查了一些关于S3批量删除的信息,但我需要一些更专业的意见,如果有的话。

我乐于接受关于使用语言的建议,这些语言可以有一个能满足我的目的的API。

PS:关于要移动的文件列表的问题是至关重要的,因为获取这些文件的标准不可能使用unix s3 cli中提供的通常的包含/排除来实现。

提前感谢

*编辑*

我刚刚找到了设置非常简单的boto3应用程序接口。只需将此信息和标签添加到主题中,以便对此有更多的见解。Tks

EN

回答 2

Stack Overflow用户

发布于 2020-12-24 05:35:23

亚马逊S3中没有“移动”命令。相反,需要对对象进行复制,然后删除源文件。这就是AWS CLI在执行aws s3 mv时实际做的事情。

AWS CLI的伟大之处在于,它以并行的方式发出命令,这极大地减少了移动大量对象的时间。事实是,Amazon S3 CopyObject调用一次只接受一个对象。因此,需要并行发出这样的命令来更快地移动它们。

另一种方法是使用S3 Batch Operations。您可以使用Put object copy

对象复制操作复制清单中指定的每个对象。您可以将对象复制到同一AWS区域的不同存储桶中,也可以复制到不同区域中的存储桶中。亚马逊批处理操作支持通过S3 S3提供的大多数复制对象的选项。这些选项包括设置对象元数据、设置权限和更改对象的存储类。

可以在CSV文件中指定要复制的对象列表。然后,您需要在复制之后删除对象,这可以通过aws cli delete-objects和对象列表来完成。

票数 2
EN

Stack Overflow用户

发布于 2020-12-24 05:42:20

如果您需要对多个文件并行调用aws cli,您可以在linux上使用parallel:

代码语言:javascript
复制
find . -name *.jpg | parallel aws s3 mv s3://bucketA/{} s3://bucketB/

不过,您需要安装它。例如:

代码语言:javascript
复制
sudo apt install parallel

代码语言:javascript
复制
sudo yum install parallel
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65429796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档