gpt4 book ai didi

amazon-web-services - 无需精确同步即可复制 S3 文件的最快方法

转载 作者:行者123 更新时间:2023-12-04 01:35:04 28 4
gpt4 key购买 nike

我有一个包含许多对象的 S3 存储桶,想将它们复制到不同的 S3 存储桶。这不是直接同步,因为有几个要求:

  • 我想简化对象键,以便 /images/all/abcdef.png复制到 /images/abcdef.png (去掉 /all )
  • 并非所有文件都会被复制。对象键都列在一个文件中(每行一个键),因为不应复制许多旧键。

  • 使用 s3 运行它命令行工具非常慢。我使用了以下脚本:
    #!/bin/bash
    while read key; do
    newkey=$(echo $key | sed 's/all\///g')
    aws s3 cp s3://oldbucket/images/$key s3://newbucket/images/$newkey
    done < $keys

    每个文件需要一两秒钟,因此复制所有文件(超过 100 万个对象)需要很多天。注意我是从外部服务器而不是 AWS 机器运行它,尽管物理上很近(Linode New Jersey 到 AWS US East 1)。对象是大约 30KB 到 3MB 的图像。

    我试过拆分 key 文件并并行运行,但似乎没有改变速度,不知道为什么。我也无法添加 S3 快速传输选项,因为原始存储桶带有“.”。在其中(S3 限制)。我想知道是否有更快的方法来做到这一点。

    最佳答案

    S3P 可能是目前(2020 年)复制 S3 文件的最快方式。我已经维持了高达 的速度8GB/秒 .
    (免责声明:我写的。)

  • NPM:npmjs.com/package/s3p
  • 来源:github.com/generalui/s3p

  • 任意 key 重写
    除了速度快之外,S3P 特别适合您的任务。 S3P 允许您提供用 JavaScript 编写的任意 key 重写规则。例如,要从您的 key 中删除“/all/”,您可以执行以下操作:
    npx s3p cp \
    --bucket my-bucket\
    --to-bucket my-to-bucket\
    --to-key "js:(key) => key.replace('/all/', '/')"
    为什么 S3P 这么快?
    我发现的每个工具都受到以下事实的阻碍:它们按顺序列出 S3 存储桶 - 请求 1000 个项目,等待,请求接下来的 1000 个项目。我想出了一种使用 S3 API 来并行化列表并显着加速任何涉及列出大量文件的 S3 操作的方法。
    易于尝试
    如果您安装了 Node.js,您可以轻松地尝试 s3p,只需打开一个终端并运行以下命令即可获得命令列表:
    npx s3p 
    注意:虽然您可以在本地机器上运行它,而且速度仍然非常快,但是在与 S3 存储桶(例如 m5.xlarge)相同的区域中使用大小合适的 EC2 实例,您将获得最大性能。

    关于amazon-web-services - 无需精确同步即可复制 S3 文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59859165/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com