Zenodo: Gzippte Dateien werden zweifach komprimiert

Erstellt am 18. Feb. 2019  ·  5Kommentare  ·  Quelle: zenodo/zenodo

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 .

Alle 5 Kommentare

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen