2012-11-15 91 views
23

当我使用s3cmd拉下文件(不讲理的尺寸 - 小于100兆字节)我偶然看到这个错误: 警告:MD5签名不匹配:计算=胡说,接到=“NOT-BLAH”aws s3 - s3cmd:“警告:MD5签名不匹配:” - 什么?

谷歌搜索表明,这可能是由S3细分文件的方式造成的。其他人已经表示忽略它。

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

谢谢您的时间, - 亨利

回答

28

展望更深层次,看起来好像s3cmd是从亚马逊读取错误的md5总和。看起来好像s3cmd从ETAG领域得到它的总和。将PUT对象的实际数据与GET'ed的对象进行比较,内容是相同的,并且可以安全地忽略该错误。

+1

我得到了这个消息,并撞上了我上传的原始文件中的DIFF与它们相匹配,所以肯定从s3cmd –

+0

这一些误报至今为止能得到纠正。该主题在3年前开放。 – Kru

+1

看起来不是这样。 @Kru我只是想为我的文件,它不匹配 –

1

我看到大约一小时前报道,S3目前正好具有这一问题,例如this tweet

RT @drags: @ylastic S3 returning incorrect md5s to s3cmd as well. Never seen an md5 with a '-' in it, until AWS. #AWS #S3

虽然AWS Status Page没有报告任何问题,我希望这是一个暂时性的问题。再试一次:-)

2

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

+0

显然不会抑制警告。 – Kemal

+1

编辑站点包/ S3/S3.py和删除警告呢。 :) – Kemal

7

如果文件上传为“Multipart”,则S3中文件的ETag与MD5不匹配。当文件被标记为多部分时,AWS会散列每个部分,连接结果并散列该值。

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

3

ETag的在他们预计,如果文件是使用多部分S3上传特性(通常用于从stdin读取文件> 15MB或文件)上传。 s3cmd 1.5.2知道这一点,并忽略这样的ETags。如果您的s3cmd大于1.5.2,请升级。