Compressão tripla e economizo apenas 1% de espaço?

Compressão tripla e economizo apenas 1% de espaço?

Estou tentando economizar espaço no meu servidor Linux e tenho uma pasta contendo, em subpastas, 22GB de imagens.

Então decidi comprimi-los.

Primeiro usei tar:

tar -zcf folder.tar folder 

Então gzip

gzip folder

E, finalmente, para garantir, por precaução, bzip2

bzip2 folder

E depois de tudo isso, o total de todos os folder.tar.gz.bzip2s, chegou a ainda 22GB! Com, usando maior precisão, uma economia de espaço de 1%!

Eu fiz algo errado aqui? Eu esperaria muitas vezes mais do que uma economia de 1%!

De que outra forma posso compactar os arquivos?

Responder1

A taxa de compressão émuitodepende do que você está compactando. A razão pela qual o texto é compactado tão bem é porque ele nem sequer começa a utilizar totalmente toda a gama de números representáveis ​​no mesmo espaço binário. Assim, formatos que o fazem (por exemplo, arquivos compactados) podem armazenar as mesmas informações em menos espaço apenas em virtude do uso de todos aqueles números binários que não significam nada em codificações textuais e podem efetivamente representar progressões inteiras de caracteres em um único byte e obter uma boa taxa de compactação dessa maneira.

Se os arquivos já estiverem compactados, normalmente você não verá muita vantagem em compactá-los novamente. Se isso realmente economizou espaço adicional, provavelmente é uma indicação de que o primeiro algoritmo de compactação é uma droga. A julgar pela natureza da questão, assumirei que muitos deles são arquivos de mídia e, como tal, já estão compactados (embora com algoritmos que priorizam a velocidade de descompressão) e, portanto, você provavelmente não obterá muito deles. Uma espécie de cenário de sangue de pedra: eles já são tão pequenos quanto poderiam ser feitos sem perder informações.

Se estou super preocupado com o espaço, apenas faço um "bzip2 -9" e considero isso bom. Já ouvi coisas boas sobre a proporção no XZ. Eu não usei o XZ (exceto para descompactar coisas de outras pessoas), mas ele deve ter uma proporção melhor do que o bzip2, mas demora um pouco mais para compactar/descompactar.

Responder2

Suas tentativas de compactação falharam porque seus dados já estão altamente compactados e não há muito mais a ganhar, veja as outras respostas para explicações mais detalhadas. No entanto, se você concordarcom perdascompressão, ao contráriosem perdascomo você tentou antes, você pode compactar as imagens significativamente. Mas como os dados são cortados, isso não pode ser desfeito.

Aqui está um exemplo de recompactação de todas as imagens JPEG usando o imagemagick. Observe que isso substituirá seus arquivos.

find image_directory -type f -name "*.jpg" -exec mogrify -quality 75% {} \+

Responder3

Os formatos de imagem mais comuns já estão compactados (como jpg, png, gif), então você não economiza muito. 1% parece certo.

Adicionar mais compactação pode, na verdade, tornar o resultado (ligeiramente) maior, porque o algoritmo de compactação não traz nenhum benefício nos dados compactados e, em seguida, o formato (por exemplo, gzip) precisa adicionar informações de cabeçalho e/ou estrutura à saída.

Desculpe! Se estiver usando pngs, você pode tentar reduzir seus arquivos usandopngcrush.

Responder4

Outro ponto que vale a pena levantar: o uso de várias ferramentas/algoritmos de compactação pode, na verdade, fazer com que o resultado final aumente de tamanho e fique maior do que o necessário. Ou seja, se você compactar 100 GB para 10 GB e tentar compactá-lo novamente, poderá obter aproximadamente 15 GB, dependendo do que está compactando e com o que está compactando.

Pessoalmente, nunca faço nada além de tar cjvf container.tar.bz2 /targetsimplesmente porque a quantidade de espaço em disco economizado pela compactação dupla é minúscula.

informação relacionada