Depois que um arquivo é compactado, é possível consultá-lo rapidamente para dizer qual é o tamanho do arquivo descompactado (sem descompactá-lo), especialmente nos casos em que o arquivo descompactado tem mais de 4 GB.
De acordo com a RFC https://tools.ietf.org/html/rfc1952#page-5, você pode consultar os últimos 4 bytes do arquivo, mas se o arquivo não compactado for> 4 GB, o valor representa apenas ouncompressed value modulo 2^32
Esse valor também pode ser recuperado executando gunzip -l foo.gz
, no entanto, a coluna "descompactada" apenas contém uncompressed value modulo 2^32
novamente, presumivelmente enquanto lê o rodapé, conforme descrito acima.
Eu estava me perguntando se existe uma maneira de obter o tamanho do arquivo descompactado sem precisar descompactá-lo primeiro, isso seria especialmente útil no caso em que os arquivos compactados com gzip contêm 50 GB + de dados e levaria um tempo para descomprimir usando métodos como gzcat foo.gz | wc -c
EDIT: A limitação de 4 GB é reconhecida abertamente na man
página do gzip
utilitário incluído no 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
saiu em 1992. Eu ficaria surpreso se houvesse muitos jovens de 23 anos vagando por aqui. Tenho certeza de que existem alguns, mas pelo que posso dizer, a idade média é de cerca de 30 a 35 anos.
xz
qual não há essa limitação. O GNU está mudando para xz
.
xz
que 'resolveria' esse problema.
gzip
deve ser mais antigo que muitos usuários nesta comunidade!