s3cmd 失败次数过多

s3cmd 失败次数过多

它曾经是我最喜欢的备份传输代理,但现在我经常从同一个 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 的轻量级替代方案,我将不胜感激。

答案1

有几个常见问题导致 s3cmd 返回您提到的错误:

  • 不存在(例如输入错误的存储桶名称;或尚未配置的存储桶)
  • 身份验证值(密钥/ID)尾随空格
  • 系统时钟不准确。可以使用 Wireshark(通过 http 连接,而不是 https 连接)查看您的系统时钟与 S3 时钟的对齐情况 - 它们应该在几秒钟内匹配。如果存在此问题,请考虑使用 NTP 来同步您的时钟。

s3cmd 的替代方案:

  • s3cp- 基于 Java 的脚本,提供了将文件传输到 S3 的良好功能,以及比 s3cmd 更详细的错误消息
  • 亚马逊- 由 Tim Kay 编写的基于 Perl 的脚本,可以轻松访问大多数 AWS(包括 S3)功能,并且非常流行。

如果您希望编写自己的脚本,可以使用 Python Boto 库,该库具有执行大多数 AWS 操作的函数,并且有许多在线示例。项目它在命令行上公开了一些 boto 函数 - 尽管当前只有极少量函数可用。

答案2

这对我的情况有帮助:

  1. s3cmd ls在桶上做
  2. 它打印了关于重定向的警告
  3. 用警告中的内容替换文件bucket_host中的。.s3cfg
  4. 重复s3cmd ls,它不再应该打印警告
  5. 重新上传文件

我的.s3cfg 现在是:

host_bucket = %(bucket)s.s3-external-3.amazonaws.com

答案3

我在使用 Ubuntu 命令时也遇到了同样的问题s3cmd

下载最新的稳定版本(1.0.1)解决了这个问题: http://sourceforge.net/projects/s3tools/files/s3cmd/

答案4

我遇到了同样的问题并找到了解决方案这里回应山姆怀斯

arn:aws:s3:::bucketname当我开始使用 IAM 进行实验时,出现了这个问题。就我而言,问题出在 ARN 中。我列出了arn:aws:s3:::bucketname/*

这就是为什么我使用 $ s3cmd ls s://bucketname 没有遇到问题,但无法在那里上传任何文件的原因((

相关内容