【问题标题】:aws s3 - s3cmd: "WARNING: MD5 signatures do not match:" - what do?aws s3 - s3cmd:“警告:MD5 签名不匹配:” - 做什么?
【发布时间】:2015-04-02 02:26:17
【问题描述】:

当我使用 s3cmd 下载文件(大小不合理 - 小于 100 兆字节)时,我偶尔会看到此错误: 警告:MD5 签名不匹配:computed=BLAH, received="NOT-BLAH"

谷歌搜索表明这可能是由 S3 分割文件的方式引起的。其他人都说忽略它。

有谁知道为什么会发生这种情况以及正确的做法是什么?

感谢您的宝贵时间, ——亨利

【问题讨论】:

    标签: amazon-s3 amazon-web-services


    【解决方案1】:

    深入研究,似乎 s3cmd 从 Amazon 读取了错误的 md5 总和。看起来 s3cmd 似乎是从 ETAG 字段中得到它的总和。将 PUT 对象的实际数据与 GET 对象的实际数据进行比较,内容是相同的,可以安全地忽略此错误。

    【讨论】:

    • 我收到了这条消息,并对我上传的原始文件进行了比较,它们匹配,所以肯定有一些来自 s3cmd 的误报
    • 现在可以更正了。该主题是 3 年前打开的。
    • 看起来不像。 @Kru 我刚刚为我的文件试了一下,结果不匹配
    • s3cmd GitHub issue 确实仍然开放:github.com/s3tools/s3cmd/issues/520
    • 我仍然看到它:)
    【解决方案2】:

    如果文件作为“Multipart”上传,S3 中文件的 ETag 将与 MD5 不匹配。当一个文件被标记为多部分时,AWS 将对每个部分进行哈希处理,连接结果,然后对该值进行哈希处理。

    如果文件实际上没有多个部分,则结果将是散列的散列,末尾添加了 -1。尝试在用于将文件上传到 S3 的工具中禁用 multipart。对于 s3cmd,选项是 --disable-multipart。

    【讨论】:

      【解决方案3】:

      如果文件是使用 S3 分段上传功能上传的(通常用于大于 15MB 的文件或从标准输入读取的文件),则需要在其中包含“-”的 ETag。 s3cmd 1.5.2 知道这一点并忽略此类 ETag。如果您的 s3cmd 早于 1.5.2,请升级。

      【讨论】:

        【解决方案4】:

        这是一个更大的问题,因为您使用的是 s3cmd sync,因为它会导致它重新下载以前同步的文件。要解决此问题,请添加 --no-check-md5 选项,这会导致 s3cmd 仅检查文件大小以确定更改的文件(这对我来说很有用,但可能并不适合所有人,具体取决于应用程序)。

        【讨论】:

        • 显然不会抑制警告。
        • 编辑 site-packages/S3/S3.py 并删除警告。 :)
        【解决方案5】:

        我在大约一个小时前看到报告说 S3 目前正遇到这个问题,例如this tweet:

        RT @drags:@ylastic S3 也将不正确的 md5s 返回到 s3cmd。在 AWS 之前,从未见过带有“-”的 md5。 #AWS #S3

        虽然AWS Status Page 没有报告任何问题,但我预计这是一个暂时性问题。请稍后再试:-)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-18
          • 2023-04-04
          • 2014-02-09
          • 1970-01-01
          • 2014-09-01
          • 1970-01-01
          相关资源
          最近更新 更多