Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将大量大文件传输到s3_Bash_Amazon S3_Put_Qsub - Fatal编程技术网

Bash 将大量大文件传输到s3

Bash 将大量大文件传输到s3,bash,amazon-s3,put,qsub,Bash,Amazon S3,Put,Qsub,我正在将大约31 TB的数据从远程服务器传输到s3存储桶,这些数据由4500个文件组成,文件大小从69MB到25GB不等。我正在使用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 然后

我正在将大约31 TB的数据从远程服务器传输到s3存储桶,这些数据由4500个文件组成,文件大小从69MB到25GB不等。我正在使用
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个小时。有人能对我的命令提出替代或修改建议吗


谢谢

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

Snowball是一个PB级的数据传输解决方案,使用安全的 用于将大量数据传输到AWS或从AWS传出的设备 云。使用Snowball解决了大规模应用的常见挑战 数据传输包括高网络成本、长传输时间和 安全问题。使用Snowball传输数据简单、快速, 安全,并且可以低至高速列车成本的五分之一 互联网

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

*Snowball当前在选定区域中可用。在AWS管理系统中创建作业后,将验证您的位置 控制台

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

还有一种类似的服务,您可以提供自己的硬件(硬盘),而不是专用设备:

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

  • 准备便携式存储设备(有关支持的设备,请参阅页面)
  • 提交创建作业请求。您将获得一个带有数字签名的作业ID,用于验证您的设备
  • 打印出您的预付运费标签
  • 安全地识别和验证您的设备。对于AmazonS3,将签名文件放在设备的根目录中。对于 Amazon EBS或Amazon Glacier,将签名条形码粘贴到 设备的外部
  • 将预付费运输标签贴在运输集装箱上,并将设备连同其接口连接器和电源一起运输 到AWS
当您的包裹到达时,它将被安全地处理 传输到AWS数据中心,您的设备将连接到该中心 到AWS导入/导出工作站。数据加载完成后 设备将返回给您


使用GNU并行,并做一些并行也许
parallel--eta-j8s4cmd put--sync check-c10{}s3://bucket name/directory/::/path/to/*fastq.gz
从何处传输?如果是另一个AWS服务,这可能太慢了,但如果从您的公司数据中心发送到AWS,我希望时间在这个范围内(因为您有单线程)。即使使用GParallel,您也可能很容易在源系统和AWS之间遇到带宽限制。(我的想法可能已经过时了,所以我很想看到当前用户的反应(总是!))。祝你好运你的互联网连接有多快?对于这样数量的数据,您可能会发现使用a会更快,尽管会有运输开销。嗨,Leon。谢谢你的回答。关于定价的一个问题-我可以理解此解决方案有助于加快传输速度,但您能否解释一下它比通过互联网进行常规传输更便宜吗?因为AWS S3的传入数据是免费的,只有当你为你的互联网连接支付流量而不是带宽时,成本优势才会显现。对于相反的情况(如果您必须从S3而不是S3进行传输),此解决方案肯定会更便宜,因为每个传出TB的成本约为85美元,这对于您的数据量来说几乎是2.5K美元。因此,我的理解是否正确,您可以在S3上免费存储任意数量的数据?不,只有将数据上传到S3是免费的。存储数据要花钱:啊,就像我的老老板经常对我说的那样,“永远不要低估一卡车磁带的带宽。”。