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.