我必须将400G的文件从弹性块存储卷复制到s3存储桶…这些大约是300k文件〜1Mb
我已经尝试了s3cmd和s3fuse ,他们都真的很慢.. s3cmd跑了一整天,说完了复制,当我检查水桶,什么也没有发生(我想有什么地方出错了,但至lesss3cmd从不抱怨任何事情)
S3Fuse正在为其他完整的一天工作,并复制不到10%的文件…
有没有更好的解决scheme呢?
我正在运行Linux(Ubuntu 12.04)
有几个关键因素决定了从EC2到S3的吞吐量:
在传输大量数据的情况下,使用集群计算实例可能是经济实用的,因为吞吐量(> 10x)的有效增益大于成本(2-3x)的差异。
虽然上面的想法是相当合理的(尽pipe每线程上限可能不是),但是很容易find支持它们的基准。 一个特别详细的可以在这里find。
使用64到128个1MB对象的并行(同时)上传应该使m1.xlarge具有的1Gbps上行链路饱和,并且甚至应该饱和集群计算(cc1.4xlarge)实例的10Gbps上行链路。
虽然更改实例大小相当容易,但另外两个因素可能难以pipe理。
所以,经过大量的testings3-parallel-put真的很棒。 很明显,如果你需要上传大量的文件到S3的解决scheme。 感谢cyberx86的评论。
根据http://docs.aws.amazon.com/cli/latest/topic/s3-config.html调整AWS CLI S3configuration值。
下面的S3同步速度增加了至less8倍!
例:
$ more ~/.aws/config [default] aws_access_key_id=foo aws_secret_access_key=bar s3 = max_concurrent_requests = 100 max_queue_size = 30000
我在C#( CopyFasterToS3 )中编写了一个优化的控制台应用程序来执行此操作。 我用EBS卷,我的情况下,它有5个文件夹与超过200万的20Gb文件的文件。 脚本在不到30分钟内执行。
在这篇文章中,我展示了如何使用并行recursion函数。 您可以将其转录成另一种语言。
祝你好运!
还有: s3funnel ,看起来很老(2008),还有一些开放的bug,但仍然从亚马逊本身列出: amzn-lnk
尝试s4cmd,而不是s3cmd。 其地址: https : //github.com/bloomreach/s4cmd
尝试使用s3-cli而不是s3cmd。 我使用它而不是s3cmd将file upload到我的s3存储桶,这使我的部署速度快了17分钟(从21分钟到4分钟)!
这里的链接: https : //github.com/andrewrk/node-s3-cli