2012-11-15 4 views
23

Когда я использую s3cmd рушить файлы (из не необоснованного размер - менее 100 мегабайта) Я иногда вижу эту ошибку: ВНИМАНИЯ: MD5 подпись не совпадает: вычисленный = BLAH, полученный = «NOT-Л»aws s3 - s3cmd: «ПРЕДУПРЕЖДЕНИЕ: подписи MD5 не совпадают» - что делать?

Googling предполагает, что это может быть вызвано файлами S3 сегментов. Другие говорили, что игнорируют это.

Кто-нибудь знает, почему это происходит и что правильно делать?

Спасибо за ваше время, - Генри

ответ

28

Заглянув в это глубже, кажется, что s3cmd читает неправильную сумму md5 от Amazon. Похоже, что s3cmd получает свою сумму из поля ETAG. Сравнивая фактические данные объекта, который был PUT, с объектом, который был GET'ed, содержимое идентично, и эту ошибку можно безопасно игнорировать.

+1

Я получил это сообщение и провел различие с исходным файлом, который я загрузил, и они совпадают, поэтому определенно некоторые ложные срабатывания от 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 sync, потому что это заставляет его повторно скачивать файлы, синхронизированные ранее. Чтобы решить эту проблему, добавьте параметр --no-check-md5, который заставляет s3cmd проверять только размеры файлов для определения измененных файлов (это полезно для моих целей, но, вероятно, не для всех, в зависимости от приложения).

+0

, по-видимому, это не будет подавлять предупреждение. – Kemal

+1

редактирование сайтов-пакетов/S3/S3.py и удаление предупреждения. :) – Kemal

7

ETag файла в S3 не будет соответствовать MD5, если файл был загружен как «Multipart». Когда файл отмечен multipart AWS будет хэш каждой части, объедините результаты и затем хэш это значение.

Если файл фактически не имеет нескольких частей, результатом будет хэш хэша с -1, добавленным в конец. Попробуйте отключить multipart в инструменте, который вы используете для загрузки файлов на S3. Для s3cmd опция --disable-multipart.

3

Ожидается, что в этом случае появятся ETags с «-», если файл был загружен с использованием функции загрузки многостраничных файлов S3 (обычно используется для файлов> 15 МБ или файлов, считанных с stdin). s3cmd 1.5.2 это знает и игнорирует такие ETags. Если ваш s3cmd старше 1.5.2, обновите его.

Смежные вопросы