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 .
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