このデータセットを参照してください: 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ファイルとハッシュサムファイル)を圧縮しておらず、この動作のどこにも通知がないため、非常に奇妙です。
編集:あなたが疑問に思っている場合(この問題について私が話したすべての人が尋ねたので)私がアップロードしたファイルは一度だけ圧縮されたと確信しています、私はそれらを私のディスクに持っています、それらはまだそこにあり、それらは一度圧縮されます。
問題を報告していただきありがとうございます。
ブラウザが送信している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/csv
がtext/plain
に変換されます。 次に、NGINXはtext/plain
ヘッダーコンテンツを確認します。これは、帯域幅を節約するためにクライアントに送信する前に圧縮するように構成されています(構成の誤り)。
素晴らしい! 私が助けることができるかどうか(そしてどのように)私に知らせてください。
残念ながら、NGINXの再構成では問題を解決できなかったため、アプリケーションのバグも修正する必要があるため、修正には少し時間がかかります。 私
終了者: https ://github.com/inveniosoftware/invenio-files-rest/pull/202