【发布时间】:2020-10-05 06:09:33
【问题描述】:
我想从 S3 存储桶下载数百万个文件,这将需要一个多星期的时间才能逐个下载 - 任何方式/任何命令都可以使用 shell 脚本并行下载这些文件?
谢谢,
【问题讨论】:
-
文件有多大?限制是要传输的数据总量,还是下载许多小文件的开销?
标签: amazon-web-services amazon-s3
我想从 S3 存储桶下载数百万个文件,这将需要一个多星期的时间才能逐个下载 - 任何方式/任何命令都可以使用 shell 脚本并行下载这些文件?
谢谢,
【问题讨论】:
标签: amazon-web-services amazon-s3
AWS CLI
您当然可以并行发出GetObject 请求。事实上,AWS Command-Line Interface (CLI) 在传输文件时正是这样做的,因此它可以利用可用带宽。 aws s3 sync 命令将并行传输内容。
如果您的存储桶有大量对象,则可能需要很长时间才能列出存储桶的内容。因此,您可能希望通过前缀(文件夹)sync 存储桶,而不是一次尝试所有操作。
AWS 数据同步
您可能想改用AWS DataSync:
AWS DataSync 是一种在线数据传输服务,可简化、自动化和加速通过 Internet 或 AWS Direct Connect 在 AWS 存储服务之间复制大量数据...通过网络将活动数据集快速移动到 Amazon S3,适用于 Windows 文件服务器的 Amazon EFS 或 Amazon FSx。 DataSync 包括自动加密和数据完整性验证,以帮助确保您的数据安全、完整地到达并随时可用。
DataSync 使用的协议可充分利用可用带宽并管理内容的并行下载。需支付$0.0125 per GB 的费用。
AWS 雪球
另一种选择是使用 AWS Snowcone (8TB) 或 AWS Snowball (50TB 或 80TB),它们是您可以预加载 S3 中的内容并将其运送到您所在位置的物理设备。然后,您将其连接到您的网络并下载数据。 (它也可以反向工作,将批量数据上传到 Amazon S3)。
【讨论】: