当连接可能不可靠时,如何使用 aws 命令行上传大文件?

当连接可能不可靠时,如何使用 aws 命令行上传大文件?

我一直无法使用aws命令行工具将大型文件 (800MB) 上传到 s3。第一次尝试成功 (经过了几个小时),但文件却无法显示,我被告知 (此处) 文件已被妖精吃掉,我需要重新开始。

我用一个 16MB 的文件进行了测试,它进行了 3 部分上传,并且顺利完成。我可以用 看到它aws s3 ls s3://mybucket

于是我尝试使用aws s3 cp bigfile.tgz s3://mybucket。但 26 分钟后,我注意到有三次上传失败,每次都像这样:

upload failed: ./bigfile.tgz to s3://mybucket/bigfile.tgz
HTTPSConnectionPool(host='s3-eu-west-1.amazonaws.com', port=443): Max retries exceeded with url: /mybucket/bigfile.tgz?partNumber=8&uploadId=m_jMF.[elided]UPz (Caused by <class 'ConnectionResetError'>: [Errno 104] Connection reset by peer)

实际上,第三条消息显示的是:“原因:[Errno 32] 管道损坏)”,而不是“原因:[Errno 104] 对等方重置连接”。

此时它仍在运行,并显示:

Completed 16 of 120 part(s) with -2 file(s) remaining

以前也发生过这种情况,我只是忽略了它,以为如果这是一个致命错误,它就会停止。现在我想知道它是否会再花 3 个小时运行,并再次给我一个不可见的文件,因为有些部分上传失败了?

如果是这种情况,我的问题是:如何通过有时会出现这些问题的互联网连接将大文件上传到 s3?有没有办法告诉它不要轻易放弃?


更新:我尝试使用不同位置的免费 wifi,文件传输很快完成,没有任何失败消息。因此,文件或我的 s3 设置没有问题。仍然希望找到一些配置选项,这样我就可以告诉它永远重试每个部分。

答案1

您可以使用Minio 客户端又名 mc,它是开源的并且与AWS S3兼容。

Minio 客户端有resume session一个命令,它会将对象上传到上次断开连接的位置。

我已经创建了一个Youtube 视频显示同样

希望对您有所帮助。免责声明:我为米尼奥

答案2

使用minio 客户端mcmcli)带有--continue标志:

mcli alias set s3 https://s3.amazonaws.com/ ACCESS_KEY SECRET_KEY
mcli cp --continue bigfile.tgz s3/mybucket/bigfile.tgz

相关内容