Ước tính tập tin không nén?


9

Tôi đã có một tệp nén (~ 60G) lớn ( tar.gz).

Tôi đã từng splitchia nó thành 4 phần và sau đó catnối chúng lại với nhau.

Tuy nhiên, bây giờ, khi tôi đang cố gắng ước tính kích thước của tệp không nén, hóa ra nó nhỏ hơn bản gốc? Sao có thể như thế được?

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

splitthực sự liên quan đến điều này? Bạn chỉ có vấn đề sau khi chia tách và nối chúng lại với nhau?
Barmar

Câu trả lời:


20

Điều này được gây ra bởi kích thước của trường được sử dụng để lưu trữ kích thước không nén trong các tệp được nén: nó chỉ có 32 bit, do đó gzipchỉ có thể lưu trữ kích thước của tệp tối đa 4 GiB. Bất cứ điều gì lớn hơn được nén và giải nén một cách chính xác, nhưng gzip -lcho kích thước không nén không chính xác.

Vì vậy, việc chia tarball và xây dựng lại nó không gây ra điều này và không nên ảnh hưởng đến tệp - nếu bạn muốn chắc chắn, bạn có thể kiểm tra nó gzip -tv.

Xem cách nhanh nhất làm việc ra kích thước nén của file gzip lớn để biết thêm chi tiết, và các gzipnhãn hiệu :

Các gzipđịnh dạng tượng trưng cho đầu vào kích thước modulo 2³² , vì vậy kích thước nén và tỉ lệ nén được liệt kê không đúng cho các tập tin nén 4 GiB và lớn hơn.


Vì vậy, nội dung thực tế vẫn có thể còn nguyên vẹn, phải không?
Ruslan

@Ruslan có, kích thước hiển thị là sai, nhưng nội dung vẫn ổn.
Stephen Kitt

+1 Tôi sẽ đoán đó là lỗi UINT32 hoặc đại loại như thế.
mathreadler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.