我想从S3存储桶中下载数百万个文件,这将花费一个多星期的时间来逐个下载-使用外壳脚本以任何方式/任何命令并行下载这些文件?
谢谢
答案 0 :(得分:2)
AWS CLI
您当然可以并行发出GetObject
个请求。实际上,AWS Command-Line Interface (CLI)在传输文件时确实做到了这一点,因此可以利用可用带宽。 aws s3 sync
命令将并行传输内容。
如果存储桶中包含大量对象,则列出存储桶中的内容可能需要很长时间。因此,您可能想通过前缀(文件夹)sync
来存储分区,而不是立即尝试所有操作。
AWS DataSync
您可能想使用AWS DataSync:
AWS DataSync是一项在线数据传输服务,可简化,自动化和加速通过Internet或AWS Direct Connect向AWS存储服务与从AWS存储服务之间复制大量数据...通过网络将活动数据集快速移动到Amazon S3, Amazon EFS或适用于Windows文件服务器的Amazon FSx。 DataSync包括自动加密和数据完整性验证,可帮助确保您的数据安全,完整且可立即使用。
DataSync使用的协议可充分利用可用带宽,并将管理内容的并行下载。需支付$0.0125 per GB
的费用。
AWS Snowball
另一种选择是使用AWS Snowcone(8TB)或AWS Snowball(50TB或80TB),它们是可以预加载来自S3的内容并将其运送到您的位置的物理设备。然后,将其连接到网络并下载数据。 (它也可以反向工作,用于将批量数据上传到Amazon S3。)