它曾经是我最喜欢的备份传输代理,但现在我经常在同一个ubuntu服务器/网络上从s3cmd获得此结果:
root@server:/home/backups# s3cmd put bkup.tgz s3://mybucket/ bkup.tgz -> s3://mybucket/bkup.tgz [1 of 1] 36864 of 2711541519 0% in 1s 20.95 kB/s Failed WARNING: Upload Failed: /bkup.tgz ([Errno 32] Broken pipe) WARNING: Retrying on lower speed (throttle=0.00) WARNING: Waiting 3 sec... bkup.tgz -> s3://mybucket/bkup.tgz [1 of 1] 36864 of 2711541519 0% in 1s 23.96 kB/s Failed WARNING: Upload Failed: /bkup.tgz ([Errno 32] Broken pipe) WARNING: Retrying on lower speed (throttle=0.01) WARNING: Waiting 6 sec... bkup.tgz -> s3://mybucket/bkup.tgz [1 of 1] 28672 of 2711541519 0% in 1s 18.71 kB/s Failed WARNING: Upload Failed: /bkup.tgz ([Errno 32] Broken pipe) WARNING: Retrying on lower speed (throttle=0.05) WARNING: Waiting 9 sec... bkup.tgz -> s3://mybucket/bkup.tgz [1 of 1] 28672 of 2711541519 0% in 1s 18.86 kB/s Failed WARNING: Upload Failed: /bkup.tgz ([Errno 32] Broken pipe) WARNING: Retrying on lower speed (throttle=0.25) WARNING: Waiting 12 sec... bkup.tgz -> s3://mybucket/bkup.tgz [1 of 1] 28672 of 2711541519 0% in 1s 15.79 kB/s Failed WARNING: Upload Failed: /bkup.tgz ([Errno 32] Broken pipe) WARNING: Retrying on lower speed (throttle=1.25) WARNING: Waiting 15 sec... bkup.tgz -> s3://mybucket/bkup.tgz [1 of 1] 12288 of 2711541519 0% in 2s 4.78 kB/s Failed ERROR: Upload of 'bkup.tgz' Failed too many times. Skipping that file.
即使对于小到100MB的文件也会发生这种情况,所以我认为这不是一个大小问题.当我使用带有–acl-private标志的put(s3cmd版本1.0.1)时也会发生这种情况
如果你建议一些解决方案或s3cmd的轻量级替代品,我感谢你.
解决方法
有几个常见问题会导致s3cmd返回您提到的错误:
>不存在(例如,输入错误的存储桶名称;或尚未配置的存储桶)
>您的身份验证值上的尾随空格(键/ ID)
>系统时钟不准确.可以使用Wireshark(通过http – 而不是https连接)来查看系统时钟如何与S3的时钟对齐 – 它们应该在几秒钟内匹配.如果这是一个问题,请考虑使用NTP同步您的时钟.
s3cmd的替代方案:
> s3cp – 基于Java的脚本,提供了将文件传输到S3的良好功能,以及比s3cmd更详细的错误消息
> aws – 由Tim Kay编写的基于Perl的脚本,可以轻松访问大多数AWS(包括S3)功能,并且非常受欢迎.
如果您希望编写自己的脚本,可以使用Python Boto库,该库具有执行大多数AWS操作的功能,并且在线提供了许多示例.有一个project在命令行上公开了一些boto函数 – 尽管目前有一小部分函数可用.