高效地将许多小文件移动到Amazon S3

9
我有大约60,000个小图像文件(总大小为200mb),想将它们从项目存储库移动到Amazon S3。
我尝试过使用s3fs (http://code.google.com/p/s3fs/),通过Mac OS X上的Transmit挂载S3以及Amazon AWS S3网页上传器。不幸的是,所有这些方法似乎都需要很长时间来完成任务,可能会超过一两天的时间。
请问是否有更好的方法?

你尝试过使用支持多部分上传的客户端吗?这样可以在一个请求中上传许多文件。另外请参考:http://aws.typepad.com/aws/2010/11/amazon-s3-multipart-upload.html - praseodym
你是否增加了 Transmit 中的并行传输数量? (首选项-> 传输-> 同时传输 __ 个文件)如果你拥有足够的本地带宽,请设置为100。 - Uriah Carpenter
4个回答

4

有一些事情可能会限制数据流动,每种情况都有不同的缓解方法:

  1. 你的传输应用程序可能会添加额外操作。如果s3fs太慢了,你可以尝试其他选项,比如AWS控制台上的S3标签或类似s3cmd的工具。

  2. 您的计算机与S3之间的网络延迟和API调用响应延迟可能是单线程内任务完成量的严重因素。 解决这个问题的关键是并行上传多个文件(数十个)。

  3. 您可能只是在您和S3之间拥有慢速网络连接,这会对总数据传输速度造成限制。 如果可以压缩文件,则可以将其以压缩形式上传到临时EC2实例,然后从该实例解压缩并上传到S3。

我认为第二种情况是最常见的,并且除非您拥有可以为您并行化上传的工具,否则它不总是最容易解决的。


2
并行调用API对我很有帮助。2k个文件(约106mb)在< 10秒内完成。而单线程需要20分钟甚至更长时间。 - Mahdi.Montgomery
我通过PHP运行了50个并发的Apache实例来达到这些速度,检查临时本地文件以避免在1Gbps可突发的线路上下载重复文件。 - Mahdi.Montgomery

2
我遇到了和这个帖子一样的问题,所以来看看。我正在通过S3管理控制台网页界面上传大约26,000个小文件(每个文件约50KB),吞吐量一直保持在大约84 KB/s左右。然后我下载了AWS CLI,并使用S3复制命令,上传吞吐量达到了约4MB/s。
以下是一些参考资料: 安装AWS cli之后,使用访问密钥和秘密密钥进行配置: aws configure 然后,S3复制就很简单了。请参阅参考文献获取更多示例,但对于我来说,类似于这样: aws s3 cp images s3://my-bucket/images --recursive

2

2

链接已失效,看起来插件已经消失了。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接