23

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

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

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

谢谢你的时间,--亨利

4

5 回答 5

28

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

于 2012-11-18T22:07:27.517 回答
7

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

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

于 2014-03-20T01:22:16.890 回答
3

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

于 2015-04-01T18:26:17.280 回答
2

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

于 2014-02-20T18:16:37.207 回答
1

大约一个小时前我看到了 S3 目前正遇到这个问题的报告,例如这条推文

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

尽管AWS 状态页面没有报告任何问题,但我预计这是一个暂时性问题。很快再试一次:-)

于 2012-11-15T02:31:40.833 回答