根据修改日期从s3存储桶下载数百万条记录

时间:2019-08-22 19:36:49

标签: amazon-web-services amazon-s3

我正在尝试将数百万条记录从s3存储桶下载到NAS。因为文件名没有特定的模式,所以我可以完全依靠修改日期来并行执行多个CLI,以加快下载速度。我找不到根据修改日期下载文件的任何帮助。任何输入将不胜感激!

有人提到使用s3api,但不确定如何通过cp或sync命令使用s3api下载文件。

当前命令:

aws --endpoint-url http://example.com s3 cp s3:/objects/EOB/ \\images\OOSS\EOB --exclude "*" --include "Jun" --recursive 

我认为这是错误的,因为此处包含的意思是在文件名中包含“ Jun”,而不是作为修改日期。

2 个答案:

答案 0 :(得分:3)

AWS CLI将并行复制文件

只需使用aws s3 sync,它将为您完成所有工作。 (我不确定您为什么要提供--endpoint-url

最坏的情况是,如果出现问题,请再次运行aws s3 sync命令。

sync命令可能需要一段时间才能收集对象列表,但让它运行。

如果您发现由于文件太多而导致网络开销很大,那么您可以考虑:

  • 在同一地区推出 Amazon EC2实例(使其变得相当大以获取较大的网络带宽;成本不会成为因素,因为它不会运行几天以上)< / li>
  • 执行aws s3 sync将文件复制到实例
  • 压缩文件(在多个组中可能比一个大zip更好)
  • 通过scp下载zip文件,或将其复制回S3并从那里下载

通过这种方式,您可以最大程度地减少传入/传出AWS的闲聊和带宽。

答案 1 :(得分:2)

我假设您要同步任意日期范围,而不仅仅是维护整个存储桶的本地同步副本(您可以使用aws s3 sync进行此操作)。

您可能必须从Amazon S3 Inventory驱动它。使用清单列表,尤其是对象上最近修改的时间戳,可以构建需要处理的对象列表。然后以某种方式对其进行分区,并将子列表发送到某个分布式/并行过程中以获取对象。