Zenodo: Los archivos comprimidos con gzip se comprimen dos veces

Creado en 18 feb. 2019  ·  5Comentarios  ·  Fuente: zenodo/zenodo

Consulte como referencia este conjunto de datos: https://zenodo.org/record/2539424

Parece que Zenodo está comprimiendo archivos gzip dos veces sin previo aviso. Entonces están "doblemente comprimidos" (!). Entonces, cuando los descargue, deben llamarse:

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

lo súper confuso es que el MD5 que se muestra se refiere al archivo original (comprimido una vez):

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

md5:2036a75ed53acdcc81f53061057fe343

por lo que esto no coincide con el archivo una vez que lo descarga, pero coincide con el archivo original (comprimido solo una vez).

Eso es lo que obtengo (guardo el archivo descargado como .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

Como puede ver, el archivo descargado no coincide con el MD5 dado y si descomprime el archivo una vez, el MD5 coincide. Una vez descomprimido, también coincide con las sumas SHA512 que proporciono por separado en el mismo conjunto de datos en el archivo eswiki.wikilink_graph.sha512sums.txt :

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

Es muy extraño porque Zenodo no está comprimiendo los archivos de texto (los archivos README y hashsum) y no hay ningún aviso de este comportamiento.


EDITAR: en caso de que se lo pregunte (ya que todos los que les he contado sobre este problema preguntaron) estoy seguro de que los archivos que he subido se comprimieron solo una vez, los tengo en mi disco, todavía están allí y se comprimen una vez .

Todos 5 comentarios

Gracias por informar el problema.

He reproducido el problema relacionado con el encabezado Accept-Encoding: gzip que envía el navegador.

$ 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

contra

$ 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

Estoy investigando más a fondo esto, pero está relacionado con nuestra configuración NGINX o de alguna manera con el tipo MIME que entrega nuestro servidor de aplicaciones.

Ok, entonces creo que he descubierto lo que está pasando. Es una combinación de un error de aplicación y una mala configuración.

El servidor de aplicaciones adivina el tipo MIME de forma similar a esto:

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

Sin embargo, solo está usando la primera parte text/csv (el error). Como medida de seguridad (porque aceptamos cualquier archivo subido por el usuario), el tipo MIME se desinfecta antes de enviarlo al navegador, lo que hace que text/csv se convierta en text/plain . Luego, NGINX ve un contenido de encabezado text/plain , que está configurado para comprimir antes de enviarlo al cliente para ahorrar ancho de banda (la configuración incorrecta).

¡Estupendo! Déjame saber si (y cómo) puedo ayudar.

Desafortunadamente, una reconfiguración de NGINX no logró resolver el problema, por lo que tomará un poco más de tiempo solucionarlo, ya que también debemos corregir el error en la aplicación. I

¿Fue útil esta página
0 / 5 - 0 calificaciones