Zenodo: Gzip圧縮されたファイルは2回圧縮されます

作成日 2019年02月18日  ·  5コメント  ·  ソース: zenodo/zenodo

このデータセットを参照してください: https ://zenodo.org/record/2539424

Zenodoが予告なしにgzip圧縮されたファイルを2回圧縮しているようです。 したがって、それらは「二重圧縮」されています(!)。 したがって、それらをダウンロードするときは、次の名前を付ける必要があります。

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

非常に紛らわしいのは、表示されるMD5が元のファイル(1回圧縮)を参照していることです。

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

md5:2036a75ed53acdcc81f53061057fe343

したがって、これはダウンロードしたファイルとは一致しませんが、元のファイル(1回だけ圧縮)とは一致します。

これが私が得たものです(ダウンロードしたファイルを.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が一致します。 圧縮解除されると、ファイルeswiki.wikilink_graph.sha512sums.txtの同じデータセットで個別に提供しているSHA512の合計とも一致します。

$ 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 (バグ)のみを使用しています。 セキュリティ対策として(ユーザーがアップロードしたファイルを受け入れるため)、mimetypeはブラウザに送信される前にサニタイズされ、 text/csvtext/plainに変換されます。 次に、NGINXはtext/plainヘッダーコンテンツを確認します。これは、帯域幅を節約するためにクライアントに送信する前に圧縮するように構成されています(構成の誤り)。

素晴らしい! 私が助けることができるかどうか(そしてどのように)私に知らせてください。

残念ながら、NGINXの再構成では問題を解決できなかったため、アプリケーションのバグも修正する必要があるため、修正には少し時間がかかります。 私

終了者: https ://github.com/inveniosoftware/invenio-files-rest/pull/202

このページは役に立ちましたか?
0 / 5 - 0 評価