Khi một tệp được nén, có một cách nhanh chóng truy vấn nó để cho biết kích thước tệp không nén là gì (không giải nén nó), đặc biệt trong trường hợp tệp không nén có kích thước> 4GB.
Theo RFC https://tools.ietf.org/html/rfc1952#page-5 bạn có thể truy vấn 4 byte cuối cùng của tệp, nhưng nếu tệp không nén là> 4GB thì giá trị chỉ đại diện chouncompressed value modulo 2^32
Giá trị này cũng có thể được lấy bằng cách chạy gunzip -l foo.gz
, tuy nhiên cột "không nén" chỉ chứa uncompressed value modulo 2^32
lại, có lẽ là khi nó đọc phần chân trang như được mô tả ở trên.
Tôi chỉ tự hỏi liệu có cách nào để có được kích thước tệp không nén mà không phải giải nén nó trước không, điều này sẽ đặc biệt hữu ích trong trường hợp các tệp được nén có chứa 50GB + dữ liệu và sẽ mất một thời gian để giải nén bằng các phương thức như gzcat foo.gz | wc -c
EDIT: Giới hạn 4GB được xác nhận công khai trong man
trang của gzip
tiện ích đi kèm với OSX ( Apple gzip 242
)
BUGS
According to RFC 1952, the recorded file size is stored in a 32-bit
integer, therefore, it can not represent files larger than 4GB. This
limitation also applies to -l option of gzip utility.
gzip
xuất hiện vào năm 1992. Tôi sẽ rất ngạc nhiên nếu có nhiều người 23 tuổi lang thang ở đây. Tôi chắc chắn có một số nhưng từ những gì tôi có thể nói tuổi trung bình là khoảng 30-35.
xz
cái không có giới hạn đó. GNU đang chuyển sang xz
.
xz
sẽ giải quyết được vấn đề này.
gzip
phải già hơn nhiều người dùng trong cộng đồng này!