Zenodo: File gzip dikompresi dua kali

Dibuat pada 18 Feb 2019  ·  5Komentar  ·  Sumber: zenodo/zenodo

Lihat untuk referensi kumpulan data ini: https://zenodo.org/record/2539424

Sepertinya Zenodo mengompresi file gzip dua kali tanpa pemberitahuan. Jadi mereka "dikompresi ganda" (!). Jadi, ketika Anda mengunduhnya, mereka harus diberi nama:

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

hal yang sangat membingungkan adalah MD5 yang ditampilkan mengacu pada file asli (dikompresi sekali):

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

md5:2036a75ed53acdcc81f53061057fe343

jadi ini tidak cocok dengan file setelah Anda mengunduhnya, tetapi cocok dengan file aslinya (hanya dikompresi sekali).

Jadi itulah yang saya dapatkan (saya menyimpan file yang diunduh sebagai .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

Seperti yang Anda lihat, file yang diunduh tidak cocok dengan MD5 yang diberikan dan jika Anda membuka kompres file sekali maka MD5 cocok. Setelah tidak dikompresi, ini juga cocok dengan jumlah SHA512 yang saya berikan secara terpisah dalam kumpulan data yang sama dalam file eswiki.wikilink_graph.sha512sums.txt :

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

Ini sangat aneh karena Zenodo tidak mengompresi file teks (file README dan hashsum) dan tidak ada pemberitahuan di mana pun tentang perilaku ini.


EDIT: Jika Anda bertanya-tanya (karena semua orang yang saya beri tahu tentang masalah ini bertanya) saya yakin bahwa file yang saya unggah hanya dikompresi sekali, saya memilikinya di disk saya, mereka masih ada dan dikompresi sekali .

Semua 5 komentar

Terima kasih telah melaporkan masalah ini.

Saya telah mereproduksi masalah yang terkait dengan header Accept-Encoding: gzip yang dikirim oleh browser.

$ 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

Saya mencari lebih jauh ke dalam ini tetapi ini terkait dengan konfigurasi NGINX kami atau entah bagaimana tipe MIME dikirimkan oleh server aplikasi kami.

Oke, jadi saya pikir saya sudah tahu apa yang terjadi. Ini adalah kombinasi dari bug aplikasi dan kesalahan konfigurasi.

Jenis MIME ditebak oleh server aplikasi yang mirip dengan ini:

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

Namun, itu hanya menggunakan bagian pertama text/csv (bug). Sebagai tindakan keamanan (karena kami menerima file yang diunggah pengguna), tipe mime disanitasi sebelum dikirim ke browser yang menyebabkan text/csv dikonversi menjadi text/plain . NGINX kemudian melihat konten header text/plain , yang dikonfigurasi untuk dikompres sebelum dikirim ke klien untuk menghemat bandwidth (salah konfigurasi).

Besar! Beri tahu saya jika (dan bagaimana) saya dapat membantu.

Sayangnya konfigurasi ulang NGINX tidak berhasil menyelesaikan masalah, jadi akan memakan waktu lebih lama untuk memperbaikinya, karena kami juga perlu memperbaiki bug di aplikasi. Saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat