Perkiraan file terkompresi salah?


9

Saya memiliki file terkompresi (~ 60G) besar ( tar.gz).

Saya biasa splitmemecahnya menjadi 4 bagian dan kemudian catbergabung kembali.

Namun, sekarang, ketika saya mencoba memperkirakan ukuran file yang tidak terkompresi, ternyata lebih kecil dari aslinya? Bagaimana ini mungkin?

$ gzip -l myfile.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
        60680003101          3985780736 -1422.4% myfile.tar

Benarkah splitrelevan dengan ini? Apakah Anda hanya memiliki masalah setelah berpisah dan bergabung kembali bersama?
— Barmar

Jawaban:


20

Ini disebabkan oleh ukuran bidang yang digunakan untuk menyimpan ukuran yang tidak terkompresi dalam file yang di-gzip: hanya 32 bit, jadi gziphanya dapat menyimpan ukuran file hingga 4 GiB. Apa pun yang lebih besar dikompresi dan tidak terkompresi dengan benar, tetapi gzip -lmemberikan ukuran terkompresi yang salah.

Jadi memisahkan tarball dan merekonstruksi itu tidak menyebabkan ini, dan seharusnya tidak mempengaruhi file - jika Anda ingin memastikan, Anda dapat memeriksanya gzip -tv.

Lihat Cara tercepat untuk bekerja di luar ukuran terkompresi dari file gzip besar untuk rincian lebih lanjut, dan yang gzippengguna :

The gzipFormat merupakan ukuran input modulo 2³² , sehingga ukuran terkompresi dan rasio kompresi terdaftar tidak benar untuk file terkompresi 4 GiB dan lebih besar.


Jadi, konten aktual masih bisa utuh, bukan?
— Ruslan

@Ruslan ya, ukuran yang ditampilkan salah, tetapi isinya baik-baik saja.
— Stephen Kitt

+1 Saya akan menebak itu adalah kesalahan UINT32 atau sesuatu seperti itu.
— mathreadler
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.