por que o gzip não cria arquivos de tamanho igual?

1

Eu tenho um arquivo que preciso dividir em tamanhos menores (< 24M quando compactado)

Aqui está o arquivo:

498775505 Mar  8 00:08 test.file

Eu dividi:

split -b 125000k test.file test.file.

Agora eu tenho arquivos de tamanhos pares (além do último arquivo que está bem)

476M Mar  8 00:08 test.file
123M Mar  8 00:09 test.file.aa
123M Mar  8 00:09 test.file.ab
123M Mar  8 00:09 test.file.ac
110M Mar  8 00:09 test.file.ad

Mas quando eu gzip esses arquivos, eles não zipar uniformemente

gzip test.file.a*

476M Mar  8 00:08 test.file
27M Mar  8 00:09 test.file.aa.gz
23M Mar  8 00:09 test.file.ab.gz
22M Mar  8 00:09 test.file.ac.gz
20M Mar  8 00:09 test.file.ad.gz

Alguém pode explicar o que está acontecendo aqui com o gzip?

(Isso é mais por curiosidade, pois posso dividi-los em quantidades menores para colocá-los abaixo de 24M , imaginando como o gzip funciona aqui)

    
por DankyKang 08.03.2018 / 01:22

1 resposta

4

Os arquivos divididos contêm partes diferentes do arquivo original (completo), eles provavelmente têm conteúdos diferentes. (A única maneira de serem idênticos seria o original ser altamente repetitivo.)

Diferentes conteúdos resultam em diferentes resultados de compactação. Coisas como aaaaaaaaaa são mais fáceis de compactar que wekfsiorlm . Em arquivos de 123 MB, há muito espaço para um arquivo ser mais "aleatório" (mais difícil de compactar) do que outro, mesmo que não seja tão extremo quanto o meu exemplo aqui.

Se você quiser controlar os tamanhos dos arquivos de resultados compactados, poderá dividir o original em partes menores, compactá-los individualmente e, em seguida, concatenar as partes compactadas juntas, até o limite de tamanho desejado. (Eu não posso pensar em uma maneira trivial de fazer isso, no entanto.)

Se a entrada para gzip -d contiver vários gzip "arquivos compactados", ela descompactará todos eles. Embora isso possa perder algum desempenho de compactação, uma vez que a divisão causa interrupções artificiais nos dados.

    
por 08.03.2018 / 01:27

Tags