Siehe als Referenz diesen Datensatz: https://zenodo.org/record/2539424
Es sieht so aus, als würde Zenodo gzippte Dateien ohne Vorankündigung zweimal komprimieren. Sie sind also "doppelt komprimiert" (!). Wenn Sie sie also herunterladen, sollten sie benannt werden:
eswiki.wikilink_graph.2006-03-01.csv.gz.gz
super verwirrend ist, dass sich die angezeigte MD5 auf die Originaldatei bezieht (einmal komprimiert):
eswiki.wikilink_graph.2006-03-01.csv.gz
md5:2036a75ed53acdcc81f53061057fe343
Dies stimmt also nicht mit der Datei überein, sobald Sie sie heruntergeladen haben, sondern mit der Originaldatei (nur einmal komprimiert).
Das bekomme ich also (ich speichere die heruntergeladene Datei als .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
Wie Sie sehen, stimmt die heruntergeladene Datei nicht mit der angegebenen MD5 überein, und wenn Sie die Datei einmal dekomprimieren, stimmt die MD5 überein. Einmal dekomprimiert, stimmt es auch mit den SHA512-Summen überein, die ich separat im selben Datensatz in der Datei eswiki.wikilink_graph.sha512sums.txt
bereitstelle:
$ grep '2006-03-01' eswiki.wikilink_graph.sha512sums.txt
56a48b0f82922fee20c07b0a2480bca1872c5e4aa8521a86e178dc00aea5dd2e4cda4ae05eb1b1950da7447dae70d47d8daa8d7a3c62d6989aaad09bd1fbcc71
eswiki.wikilink_graph.2006-03-01.csv.gz
Es ist sehr seltsam, weil Zenodo die Textdateien (die README- und die Hashsummen-Dateien) nicht komprimiert und es nirgendwo einen Hinweis auf dieses Verhalten gibt.
EDIT: Falls Sie sich wundern (da alle, denen ich von diesem Problem erzählt habe, gefragt haben), bin ich sicher , dass die Dateien, die ich hochgeladen habe, nur einmal komprimiert wurden, ich habe sie auf meiner Festplatte, sie sind immer noch da und sie sind einmal komprimiert .
Danke, dass Sie das Problem gemeldet haben.
Ich habe das Problem reproduziert, das mit dem Accept-Encoding: gzip
-Header zusammenhängt, den der Browser sendet.
$ 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
vs.
$ 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
Ich untersuche das weiter, aber es hängt entweder mit unserer NGINX-Konfiguration zusammen oder irgendwie mit dem MIMEtype, der von unserem Anwendungsserver geliefert wird.
Ok, ich glaube, ich habe herausgefunden, was los ist. Es ist eine Kombination aus einem Anwendungsfehler und einer Fehlkonfiguration.
Der MIME-Typ wird vom Anwendungsserver ähnlich wie folgt erraten:
>>> import mimetypes
>>> mimetypes.guess_type('eswiki.wikilink_graph.2006-03-01.csv.gz')
('text/csv', 'gzip')
Es wird jedoch nur der erste Teil text/csv
(der Fehler) verwendet. Als Sicherheitsmaßnahme (da wir jede vom Benutzer hochgeladene Datei akzeptieren) wird der Mimetyp bereinigt, bevor er an den Browser gesendet wird, wodurch text/csv
in text/plain
umgewandelt wird. NGINX sieht dann einen text/plain
-Header-Inhalt, den es so konfiguriert, dass es komprimiert wird, bevor es an den Client gesendet wird, um Bandbreite zu sparen (die Fehlkonfiguration).
Toll! Lassen Sie mich wissen, ob (und wie) ich helfen kann.
Leider konnte eine Neukonfiguration von NGINX das Problem nicht lösen, daher wird die Behebung etwas länger dauern, da wir auch den Fehler in der Anwendung beheben müssen. ich
Geschlossen von: https://github.com/inveniosoftware/invenio-files-rest/pull/202