Ruby S3 Multipart暂停和恢复(调用close后添加一个部分)

时间:2012-05-03 22:51:03

标签: ruby-on-rails amazon-s3

我正在使用aws-sdk gem,我正在尝试基本上传一个非常大的文件(需要2天)。

文件以块的形式上传,但有时脚本会崩溃,我想继续上传(下一个块)。

在上传过程中,我们希望关闭close分段上传(因此我们可以访问到目前为止已上传的s3数据)。

在分段上传关闭后是否可以添加部件? (说第二天)基本上恢复上传?

1 个答案:

答案 0 :(得分:2)

  

在分段上传关闭后是否可以添加部件?   (说第二天)基本上恢复上传?

不是这样,但你可以模拟你想要的影响。

背景

Uploading Objects Using Multipart Upload API 允许您将单个对象上传为一组部件

  

每个部分都是对象数据的连续部分。你可以上传   这些对象部分独立地以任何顺序排列。如果传播   任何部分失败,您可以重新传输该部分而不影响其他部分   部分。 在您的对象的所有部分上传后,Amazon S3   组装这些部分并创建对象。 [强调我的]

Complete Multipart Upload中详细介绍了这一点:

  

首先启动分段上传,然后上传所有部分   使用“上传部件”操作(请参阅上载部件)。 [...] 收到此请求后,Amazon S3   按部件编号按升序连接所有部件以创建   一个新对象。 [...]您必须确保零件清单完整,   此操作连接您在列表中提供的部分。 [...] [强调我的]

也就是说,上传操作在此处完成,uploading another part无法恢复。 (从技术上讲,对于已启动的分段上传的任何操作所需的upload ID不再可用/有效。)

解决方案

您可以通过Upload Part - Copy操作简单地启动新的分段上传并将以前上传的S3对象上传为此新多部分对象的第一部分,通过复制数据来上传部件现有对象作为数据源