Veja como referência este conjunto de dados: https://zenodo.org/record/2539424
Parece que Zenodo está comprimindo arquivos gzipados duas vezes sem aviso prévio. Portanto, eles são "duplamente compactados" (!). Então, quando você baixá-los, eles devem ser nomeados:
eswiki.wikilink_graph.2006-03-01.csv.gz.gz
o super confuso é que o MD5 exibido se refere ao arquivo original (compactado uma vez):
eswiki.wikilink_graph.2006-03-01.csv.gz
md5:2036a75ed53acdcc81f53061057fe343
portanto, isso não corresponde ao arquivo depois de baixado, mas corresponde ao arquivo original (compactado apenas uma vez).
Então é isso que eu recebo (eu salvo o arquivo baixado 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 você vê, o arquivo baixado não corresponde ao MD5 fornecido e se você descompactar o arquivo uma vez, o MD5 corresponde. Uma vez descompactado, ele também corresponde às somas SHA512 que estou fornecendo separadamente no mesmo conjunto de dados no arquivo eswiki.wikilink_graph.sha512sums.txt
:
$ grep '2006-03-01' eswiki.wikilink_graph.sha512sums.txt
56a48b0f82922fee20c07b0a2480bca1872c5e4aa8521a86e178dc00aea5dd2e4cda4ae05eb1b1950da7447dae70d47d8daa8d7a3c62d6989aaad09bd1fbcc71
eswiki.wikilink_graph.2006-03-01.csv.gz
É muito estranho porque Zenodo não está comprimindo os arquivos de texto (os arquivos README e hashsum) e não há nenhum aviso sobre esse comportamento.
EDIT: Caso você esteja se perguntando (já que todos que eu falei sobre esse problema perguntaram) tenho certeza de que os arquivos que enviei foram compactados apenas uma vez, eu os tenho no meu disco, eles ainda estão lá e são compactados uma vez .
Obrigado por relatar o problema.
Reproduzi o problema relacionado ao cabeçalho Accept-Encoding: gzip
que o navegador está enviando.
$ 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
Estou pesquisando mais sobre isso, mas está relacionado à nossa configuração NGINX ou de alguma forma o MIMEtype que está sendo entregue pelo nosso servidor de aplicativos.
Ok, então acho que descobri o que está acontecendo. É uma combinação de um bug de aplicativo e configuração incorreta.
O tipo MIME é adivinhado pelo servidor de aplicativos semelhante a este:
>>> import mimetypes
>>> mimetypes.guess_type('eswiki.wikilink_graph.2006-03-01.csv.gz')
('text/csv', 'gzip')
No entanto, está usando apenas a primeira parte text/csv
(o bug). Como medida de segurança (porque aceitamos qualquer arquivo enviado pelo usuário), o tipo MIME é higienizado antes de ser enviado ao navegador fazendo com que text/csv
seja convertido em text/plain
. O NGINX então vê um conteúdo de cabeçalho text/plain
, que é configurado para compactar antes de enviar ao cliente para economizar largura de banda (a configuração incorreta).
Excelente! Deixe-me saber se (e como) posso ajudar.
Infelizmente uma reconfiguração do NGINX não conseguiu resolver o problema, então vai demorar um pouco mais para corrigi-lo, pois também precisamos corrigir o bug no aplicativo. eu