如何在不稳定的连接上将大文件上传到 S3?

如何在不稳定的连接上将大文件上传到 S3?

我有一堆文件(500MB 到 7GB 之间)需要上传到 S3 存储桶。我的连接非常不稳定。

我尝试通过上传一个 500MB 的文件,s3cmd但在完成 91% 后超时(耗时 16 小时)

我尝试使用 Cyber​​Duck,但发生了同样的情况。它在传输了 20% 左右后失败了,当我尝试重试传输时,它又从头开始。Cyber​​Duck 应该支持多部分传输,但我猜不是...

我可以将文件拆分成更小的文件,如下所示:如何将 .zip 文件拆分成多个段?,但我宁愿不这样做,除非这是我唯一的选择。有什么好的程序可以让我上传大文件到 S3 并支持恢复?

答案1

我刚刚尝试使用 s3tools (s3cmd-1.5.0-rc1)。从他们的常见问题解答中得到了这个提示http://s3tools.org/kb/item13.htm。 见下文。

s3cmd 是否支持分段上传?

是的,最新版本的 s3cmd 支持 Amazon S3 分段上传。

当要上传的文件大于 15MB 时,系统会自动使用分段上传。在这种情况下,文件会被拆分成多个部分,每个部分大小为 15MB(最后一个部分可以更小)。然后,每个部分会单独上传,并在传输完成后在目的地重新构建。

有了这个新功能,如果某个部分上传失败,则可以重新启动,而不会影响任何已上传的其他部分。

s3cmd 中有两个与分段上传相关的选项。它们是:

--禁用多部分

禁用所有文件的分段上传

–multipart-chunk-size-mb =大小

分段上传中每个块的大小。大于 SIZE 的文件将自动以多线程分段方式上传,较小的文件将使用传统方法上传。SIZE 以兆字节为单位,默认块大小为 15MB,允许的最小块大小为 5MB,最大为 5GB。

因此,当我上传时,我会选择最小的块大小。您应该看到下面的上传分割和恢复。

$ s3cmd put --multipart-chunk-size-mb=5 some_video.mp4 s3://some_bucket/

some_video.mp4 -> s3://some_bucket/some_video.mp4  [part 1 of 52, 5MB]
 5242880 of 5242880   100% in  164s    31.08 kB/s  done
some_video.mp4 -> s3://some_bucket/some_video.mp4  [part 2 of 52, 5MB]
 5242880 of 5242880   100% in  193s    26.46 kB/s  done
some_video.mp4 -> s3://some_bucket/some_video.mp4  [part 3 of 52, 5MB]
 2023424 of 5242880    38% in  135s    14.59 kB/s^CERROR: 
some_video.mp4' part 3 failed. Use
  /usr/local/bin/s3cmd abortmp s3://some_bucket/some_video.mp4 XXX_SOME_HASH_XXX
to abort the upload, or
  /usr/local/bin/s3cmd --upload-id XXX_SOME_HASH_XXX put ...
to continue the upload.
See ya!

然后我继续。

/usr/local/bin/s3cmd --upload-id XXX_SOME_HASH_XXX put --multipart-chunk-size-mb=5 some_video.mp4 s3://some_bucket/

答案2

我相信在传输窗口中的 Cyber​​duck 中,您可以右键单击并选择恢复。

如果这不管用,云莓支持恢复上传

答案3

您可以使用 FileZilla Pro 将文件传输到 S3 存储桶或从 S3 存储桶传输文件。FileZilla Pro 支持分段上传,如果发生故障,它将恢复传输。

据记录,它还附带许多其他功能:大文件支持、批量传输、过滤器、目录比较、远程文件搜索、拖放、速度限制配置。

我是 FileZilla Pro 团队的成员。

了解更多信息https://filezillapro.com以及https://youtube.com/c/FileZillaPro

相关内容