Amazon web services aws复制速度使用通配符比发送所有命令的优势?

Amazon web services aws复制速度使用通配符比发送所有命令的优势?,amazon-web-services,amazon-s3,cp,Amazon Web Services,Amazon S3,Cp,我正在尝试在存储桶之间复制大量文件,每秒只能得到大约15个文件。这是不可用的,有500k文件 所以我想知道在cp语句中使用通配符与发送单独的cp语句是否有任何区别?这里使用的“标准”是什么?或者两者都会导致相同的客户端和服务器负载 作为一个例子,我现在已经根据文件的批id编写了代码,并将它们分组发送。 但是我没有(从一个非常基本的测试中)得到它更快的印象 e、 g aws s3 cp/XY.15937610001 aws s3 cp/XY.15937610002 aws s3 cp/XY.159

我正在尝试在存储桶之间复制大量文件,每秒只能得到大约15个文件。这是不可用的,有500k文件

所以我想知道在cp语句中使用通配符与发送单独的cp语句是否有任何区别?这里使用的“标准”是什么?或者两者都会导致相同的客户端和服务器负载

作为一个例子,我现在已经根据文件的批id编写了代码,并将它们分组发送。 但是我没有(从一个非常基本的测试中)得到它更快的印象

e、 g

aws s3 cp/XY.15937610001
aws s3 cp/XY.15937610002
aws s3 cp/XY.15937610003
:
aws s3 cp/XY.15937615999
与:

指令

aws s3 cp--recursive--exclude=“*”--include=“XY.159376*” 多谢各位

PS edit-使用max_并发会话或类似S3DistCp(s3 dist cp)(不管是什么)是加快速度的唯一方法吗?
这两个选项目前都不可用…

我相信使用
--include
/
--exclude
标志的一些时间将用于查询具有该模式的键的任何特定对象

是否可以批处理并行运行多个前缀,并指定确切的前缀

每当执行查询以列出对象时,后端API都必须检查S3体系结构中许多分布式节点的内容,以检查它们是否符合此条件

如果您可以并行运行这些程序,那么您可能会看到一些速度提高,但请注意以下可能会减慢速度的因素:

  • 磁盘I/O—如果写入磁盘,请注意磁盘可能会节流。对于EBS中的GP2卷,它们使用burstable积分来实现IOPs性能
  • 网络I/O—服务器能否支持这种吞吐量?如果您使用的是EC2实例,请查看
  • -如果您使用的是EC2,请确保您的实例已启用EBS优化。这有助于避免EBS卷上网络I/O和存储I/O之间的带宽争用
  • VPC端点-为S3设置VPC端点,并将其应用于实例的路由表。通过这样做,到S3的连接变得私有,从而减少了API操作和复制的延迟

在一个命令中复制多个文件应该更有效,因为AWS CLI将并行复制它们(可能使用某种类型的线程)。这意味着启动每个副本的开销是并行完成的,而不是顺序完成的。您会注意到,更大的文件会带来更大的速度提升。感谢您提供的信息,这很有帮助。我现在已经实现了一个脚本,它在单独的行中生成所有最高级别的“include 4*--include 5*”等,然后以并行调用的形式发送,总共16个。我能够在1.47小时内移动400k文件,这是可以接受的。
aws s3 cp <path>/XY.15937610001 <path_to>
aws s3 cp <path>/XY.15937610002 <path_to>
aws s3 cp <path>/XY.15937610003 <path_to>
:
aws s3 cp <path>/XY.15937615999 <path_to>
aws s3 cp <path> <path_to> --recursive --exclude="*" --include="XY.159376*"