【问题标题】:Download millions of records from s3 bucket based on modified date根据修改日期从 s3 存储桶下载数百万条记录
【发布时间】:2019-08-23 22:00:19
【问题描述】:

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

有人提到使用 s3api,但不知道如何使用 s3api 与 cp 或 sync 命令下载文件。

当前命令:

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

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

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    AWS CLI 将并行复制文件

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

    最坏的情况,如果出现问题,只需再次运行aws s3 sync 命令即可。

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

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

    • 在同一区域启动 Amazon EC2 实例(使其相当大以获得较大的网络带宽;成本不是一个因素,因为它不会运行超过几天)
    • 执行aws s3 sync 将文件复制到实例
    • 压缩文件(最好是多组而不是一个大压缩)
    • 通过 scp 下载 zip 文件,或将它们复制回 S3 并从那里下载

    这样,您可以最大限度地减少进出 AWS 的干扰和带宽。

    【讨论】:

      【解决方案2】:

      我假设您要同步任意日期范围,而不仅仅是维护整个存储桶的本地同步副本(您可以使用 @987654322 @)。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-06
        • 2014-09-25
        相关资源
        最近更新 更多