将大量大文件传输到s3

时间:2017-02-17 15:05:38

标签: bash amazon-s3 put qsub

我正在传输大约31 TB的数据,其中包含4500个文件,文件大小从69MB到25GB,从远程服务器到s3存储桶。我正在使用s4cmd put执行此操作并将其放入bash脚本upload.sh

#!/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

这花了太长时间 - 上传~20个文件需要10个小时。有人可以建议替代或修改我的命令吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

  

Snowball是一种使用安全的PB级数据传输解决方案   用于将大量数据传入和传出AWS的设备   云。使用Snowball解决了大规模的常见挑战   数据传输包括高网络成本,长传输时间和   安全问题。使用Snowball传输数据简单,快速,   安全,可以低至高速成本的五分之一   因特网。

     

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

     

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

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

还有一个类似的服务AWS Import/Export disk,您可以在这里发送自己的硬件(硬盘驱动器),而不是他们的特殊设备:

  

使用AWS Import / Export Disk:

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

当您的包裹到货时,它将被安全处理   转移到AWS数据中心,您的设备将连接到该数据中心   到AWS Import / Export站。数据加载完成后,   设备将退还给您。