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

use*_*254 10 upload amazon-s3 internet-connection

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

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

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

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

小智 6

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

s3cmd 是否支持分段上传?

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

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

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

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

--disable-multipart

禁用所有文件的分段上传

--multipart-chunk-size-mb=SIZE

分段上传的每个块的大小。大于 SIZE 的文件自动上传为 multithreaded-multipart,较小的文件使用传统方法上传。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!
Run Code Online (Sandbox Code Playgroud)

然后我继续。

/usr/local/bin/s3cmd --upload-id XXX_SOME_HASH_XXX put --multipart-chunk-size-mb=5 some_video.mp4 s3://some_bucket/
Run Code Online (Sandbox Code Playgroud)


ern*_*nie 2

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

如果这不起作用,Cloudberry支持恢复上传