将大量大文件传输到s3

问题描述:

我将大约31 TB的数据(包含4500个文件,文件大小范围从69MB到25GB)从远程服务器传输到s3存储桶。我使用s4cmd put要做到这一点,并把它放在一个bash脚本upload.sh将大量大文件传输到s3

#!/bin/bash 

FILES="/path/to/*.fastq.gz" 
for i in $FILES 
do 
    echo "$i" 
    s4cmd put --sync-check -c 10 $i s3://bucket-name/directory/ 
done 

然后我用qsub提交作业:

qsub -cwd -e error.txt -o output.txt -l h_vmem=10G -l mem_free=8G -l m_mem_free=8G -pe smp 10 upload.sh 

这是服用了太多的时间 - 它需要10个小时上传〜20个文件。有人可以提出对我的命令的替代或修改吗?

谢谢!

+0

使用** GNU并行**并做一些并行可能吗? 'parallel --eta -j 8 s4cmd put --sync-check -c 10 {} s3:// bucket-name/directory/:::/path/to/* fastq.gz' –

+1

从哪里转移?如果另一个AWS服务,可能这个速度太慢了,但是如果从你的公司数据中心发送到AWS,我希望在这个范围内(因为你有单线程)。即使使用GParallel,您也可能很容易陷入源系统和AWS之间的带宽限制。 (我的想法可能已过时,所以我很想看到来自当前用户的回复(总是!))。祝你好运! – shellter

+1

您的互联网连接有多快?对于这一数量的数据,尽管存在运输费用,但使用[Snowball](https://aws.amazon.com/snowball/)可能会更快。 – stdunbar

您的情况可能属于将数据复制到物理介质并通过普通邮件发送的情况比通过互联网传输数据更快,更便宜的情况。 AWS支持这样一个“协议”并且有一个特殊名称 - AWS Snowball

雪球是使用安全 家电大量数据传入和传出的AWS 云的PB级数据传输解决方案。使用Snowball解决了大规模数据传输中常见的难题,包括高网络成本,长传输时间和安全问题。使用Snowball传输数据非常简单,快速,安全,而且可以低至互联网高速的成本的五分之一。

借助雪球,您不需要编写任何代码或购买任何 硬件来传输数据。只需在AWS 管理控制台中创建一项作业,并且雪球设备将自动发送给您* *。一旦到达,将设备连接到本地网络 ,下载并运行Snowball客户端以建立 连接,然后使用客户端选择要传输到设备的文件目录 。客户端然后将 加密并高速将文件传输到设备。一旦 传输完成并且设备已准备好返回,E Ink的运输标签将自动更新,您可以通过亚马逊简单通知服务(SNS),文本 或直接在控制台中跟踪 作业状态。

*部分地区目前有雪球。在AWS Management 控制台中创建作业后,您的位置将被验证。

他们较小的设备容量为50TB,非常适合您的情况。

也有类似的服务AWS Import/Export disk,在那里你船自己的硬件(硬盘驱动器),而不是他们的特殊装置:

要使用AWS导入/导出磁盘:

  • 准备便携式存储设备(请参阅支持设备的Product Details页面)。
  • 提交创建工作请求。您将获得带有用于验证设备的数字签名的工作ID。
  • 打印出您的预付运费标签。
  • 安全地识别和验证您的设备。对于Amazon S3,将签名文件放置在设备的根目录下。对于 Amazon EBS或Amazon Glacier,请将签名条形码粘贴到设备外部的 。
  • 将预付运费标签附加到装运箱并将设备及其接口连接器和电源 发送给AWS。

当你的包到达时,它将被处理并牢固地 转移到AWS数据中心,在那里设备将被附接到 到AWS导入/导出站。数据加载完成后, 设备将返回给您。

+0

嗨Leon。感谢你的回答。关于定价的一个问题 - 我可以理解,这个解决方案可以帮助更快的传输,但是你能解释它如何比通过互联网定期传输便宜吗? –

+0

由于到AWS S3的传入数据是免费的,因此只有当您为互联网连接支付流量而不是带宽时,才会显示成本优势。对于相反的情况(如果您必须将**从** S3而不是**转移到** S3),此解决方案肯定会更便宜,因为每个传出TB的成本约为85美元,相当于您的金额将近2.5万美元数据的。 – Leon

+0

所以我理解你可以在S3上免费存储任何数量的数据吗? –