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

Stephen Kitt
sumber
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