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 divido:
split -b 125000k test.file test.file.
Agora eu tenho arquivos de tamanho uniforme (além do último arquivo que está bom)
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 compactam 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 gzip?
(Isso é mais por curiosidade, pois posso simplesmente dividi-los em quantidades menores para colocá-los em 24M
, apenas imaginando como o gzip funciona aqui)
Os arquivos divididos contêm partes diferentes do arquivo original (completo), 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 compressão. Coisas como
aaaaaaaaaa
são mais fáceis de compactar do quewekfsiorlm
. Em arquivos de 123 MB, há muito espaço para um arquivo ter uma aparência mais "aleatória" (mais difícil de compactar) do que outro, mesmo que não seja tão extremo quanto meu exemplo aqui.Se você deseja controlar os tamanhos dos arquivos de resultado compactados, pode dividir o original em partes menores, comprimi-las individualmente e depois concatenar as partes compactadas até o limite de tamanho desejado. (Não consigo pensar em uma maneira trivial de fazer isso, no entanto.)
Se a entrada para
gzip -d
contiver váriosgzip
"arquivos" compactados, ela descompacta todos eles. Embora isso perca algum desempenho de compactação, já que a divisão causa quebras artificiais nos dados.