Zenodo: Gzip-файлы сжимаются в два раза

Созданный на 18 февр. 2019  ·  5Комментарии  ·  Источник: zenodo/zenodo

См. для справки этот набор данных: https://zenodo.org/record/2539424

Похоже, Zenodo дважды сжимает gzip-файлы без предварительного уведомления. Так что они "двойное сжатие" (!). Итак, когда вы загружаете их, они должны быть названы:

eswiki.wikilink_graph.2006-03-01.csv.gz.gz

самое запутанное заключается в том, что отображаемый MD5 относится к исходному файлу (сжатому один раз):

eswiki.wikilink_graph.2006-03-01.csv.gz

md5:2036a75ed53acdcc81f53061057fe343

так что это не соответствует файлу после его загрузки, но совпадает с исходным файлом (сжатым только один раз).

Вот что я получаю (я сохраняю загруженный файл как .gz.gz ):

$ md5sum eswiki.wikilink_graph.2006-03-01.csv.gz.gz
b32c3b896be22c32bb17b9fe887bda51  eswiki.wikilink_graph.2006-03-01.csv.gz.gz

$ gunzip eswiki.wikilink_graph.2006-03-01.csv.gz.gz

$ md5sum eswiki.wikilink_graph.2006-03-01.csv.gz
2036a75ed53acdcc81f53061057fe343  eswiki.wikilink_graph.2006-03-01.csv.gz

$ sha512sum eswiki.wikilink_graph.2006-03-01.csv.gz
56a48b0f82922fee20c07b0a2480bca1872c5e4aa8521a86e178dc00aea5dd2e4cda4ae05eb1b1950da7447dae70d47d8daa8d7a3c62d6989aaad09bd1fbcc71
 eswiki.wikilink_graph.2006-03-01.csv.gz

$ zcat eswiki.wikilink_graph.2006-03-01.csv.gz | head -n10
page_id_from    page_title_from page_id_to  page_title_to
10  Argentina   3037    10 de enero
10  Argentina   3326    12 de octubre
10  Argentina   6301    13 de abril
10  Argentina   7874    1492
10  Argentina   6302    14 de abril
10  Argentina   14485   1502
10  Argentina   14471   1516
10  Argentina   14450   1536
10  Argentina   14434   1553

Как видите, загруженный файл не соответствует заданному MD5, и если вы один раз распакуете файл, то MD5 совпадет. После распаковки он также совпадает с суммами SHA512, которые я предоставляю отдельно в том же наборе данных в файле eswiki.wikilink_graph.sha512sums.txt :

$ grep '2006-03-01' eswiki.wikilink_graph.sha512sums.txt
56a48b0f82922fee20c07b0a2480bca1872c5e4aa8521a86e178dc00aea5dd2e4cda4ae05eb1b1950da7447dae70d47d8daa8d7a3c62d6989aaad09bd1fbcc71
 eswiki.wikilink_graph.2006-03-01.csv.gz

Это очень странно, потому что Zenodo не сжимает текстовые файлы (README и файлы хэш-сумм) и нигде не упоминается об этом поведении.


РЕДАКТИРОВАТЬ: Если вам интересно (поскольку все, о чем я говорил об этой проблеме, спрашивали), я уверен , что файлы, которые я загрузил, были сжаты только один раз, они у меня на диске, они все еще там, и они сжаты один раз .

Все 5 Комментарий

Спасибо, что сообщили о проблеме.

Я воспроизвел проблему, связанную с заголовком Accept-Encoding: gzip , который отправляет браузер.

$ curl -H "Accept-Encoding: gzip" -o eswiki.wikilink_graph.2006-03-01.csv.gz https://zenodo.org/record/2539424/files/eswiki.wikilink_graph.2006-03-01.csv.gz?download=1
$ md5sum eswiki.wikilink_graph.2006-03-01.csv.gz
b32c3b896be22c32bb17b9fe887bda51  eswiki.wikilink_graph.2006-03-01.csv.gz

против.

$ curl -o eswiki.wikilink_graph.2006-03-01.csv.gz https://zenodo.org/record/2539424/files/eswiki.wikilink_graph.2006-03-01.csv.gz?download=1
$ md5sum eswiki.wikilink_graph.2006-03-01.csv.gz
2036a75ed53acdcc81f53061057fe343  eswiki.wikilink_graph.2006-03-01.csv.gz

Я изучаю это дальше, но это либо связано с нашей конфигурацией NGINX, либо каким-то образом MIMEtype, доставляемый нашим сервером приложений.

Итак, я думаю, что понял, что происходит. Это сочетание ошибки приложения и неправильной настройки.

Тип MIME угадывается сервером приложений следующим образом:

>>> import mimetypes
>>> mimetypes.guess_type('eswiki.wikilink_graph.2006-03-01.csv.gz')
('text/csv', 'gzip')

Однако он использует только первую часть text/csv (ошибка). В качестве меры безопасности (поскольку мы принимаем любой загруженный пользователем файл) MIME-тип дезинфицируется перед отправкой в ​​браузер, в результате чего text/csv преобразуется в text/plain . Затем NGINX видит содержимое заголовка text/plain , которое он настроен сжимать перед отправкой клиенту для экономии полосы пропускания (неправильная конфигурация).

Здорово! Дайте мне знать, если (и как) я могу помочь.

К сожалению, перенастройка NGINX не помогла решить проблему, поэтому ее исправление займет немного больше времени, так как нам также необходимо исправить ошибку в приложении. я

Была ли эта страница полезной?
0 / 5 - 0 рейтинги