Maior compactação de arquivos (para transferência pela web)?

14

Eu vi alguns arquivos altamente compactados ao redor, como 700MB de dados compactados para cerca de 30-50MB.

Mas como você obtém esses arquivos compactados? Eu tentei usar software como WinRAR e 7Zip, mas nunca consegui uma compressão tão alta.

Quais são as técnicas / software que permitem compactar arquivos tão bem?

(PS estou usando o Windows XP)

rzlines
fonte
Boa idéia ... mas de onde você tira esses arquivos?
Robinicks
3
Eu vi 7zip compactar arquivos de log do servidor (principalmente texto) para baixo para cerca de 1% do seu tamanho original.
Umber Ferrule
2
Abra o Bloco de Notas. Digite 1 Bilhão vezes "A". Salve e, em seguida, comprima. UAU! Crie um aplicativo que grava 1 bilhão (verdadeiro) de números aleatórios em um arquivo. Comprimir isso. HÃ?
igrimpe
igrimpe: Muitos padrões de índices de algoritmos de compressão. Um bilhão de A é um milhão de vezes. Você pode comprimir isso para [A] {1, 1000000000}. Se você tiver um bilhão de números aleatórios, será difícil fazer a correspondência de padrões, pois cada número consecutivo em um determinado subconjunto diminui a probabilidade de um subconjunto correspondente exponencialmente.
AaronF

Respostas:

11

Se o tempo necessário para compactar os dados não for um problema, você poderá otimizar o tamanho compactado usando várias ferramentas diferentes.

Comprimir os dados várias vezes usando diferentes ferramentas como 7zip, winrar (para zip) e bjwflate.

(Observe que isso não significa compactar o arquivo zip repetidamente, mas sim criar vários arquivos zip alternativos usando ferramentas diferentes)

Em seguida, execute deflopt em cada arquivo para reduzir cada arquivo um pouco mais.

Finalmente, execute zipmix na coleção de arquivos. Como diferentes ferramentas zip são melhores em arquivos diferentes, o zipmix escolhe a melhor versão compactada de cada arquivo de cada um dos arquivos e produz uma saída menor do que qualquer uma das ferramentas zip produzidas individualmente.

Você deve observar, no entanto, que não é garantido que ele funcione com qualquer tipo de mágica em seus arquivos. Certos tipos de dados simplesmente não são muito compactados, como JPEGs e MP3s. Esses arquivos já estão compactados internamente.

izb
fonte
4
JPEGs e MP3s não são compactados. Eles são compactados, mas não zipados.
KovBal
Este é um conselho incrivelmente pobre, tentar usar vários algoritmos de compactação seqüencialmente é uma idéia muito ruim. Cada algoritmo cria um arquivo compactado + sobrecarga, então usando vários você está realmente adicionando dados aos dados que você está tentando comprimir - é como tentar cavar um buraco na areia, quanto mais fundo você vai, mais areia entra você. Você é muito melhor usando um único algoritmo bom em configurações de compactação máxima.
Tacroy
Eu acho que você entendeu mal .. os mesmos dados não estão sendo recomprimidos repetidamente. Em vez disso, você está simplesmente escolhendo o melhor algoritmo único por arquivo, e não por arquivo.
Izb 05 de
6
Comprimir os dados várias vezes é bastante enganador.
ta.speot.is
12

Isso depende inteiramente dos dados que estão sendo compactados.

Texto comprime muito bem, formatos binários não tão bem e dados compactados (mp3, jpg, mpeg) não em todos.

Aqui está uma boa tabela de comparação de compressão da wikipedia.

Nifle
fonte
Estou ciente de que a compactação depende do tipo de dados, mas existem técnicas específicas que ajudem a compactar ainda mais os arquivos?
rzlines
3
Uma vez que você tenha comprimido algo, é geralmente impossível obtê-lo de maneira mensurável. Você só precisa selecionar o método de compactação apropriado para seus dados.
Nifle
O texto pode ser facilmente compactado em até 90%.
Georg Schölly
@ GeorgSchölly: Isso é excelente. Porque eu posso converter qualquer dado em texto, por exemplo, converter cada byte binário em dois dígitos hexadecimais exibidos no texto. Isso duplicaria meu tamanho, mas economizar 90% do tamanho dobrado resulta em uma economia geral de 80%. (Ou, eu poderia usar a base64 para um pouco mais de eficiência na conversão binária para texto.) Esta é uma ótima notícia! :)
TOOGAM
8

As respostas anteriores estão erradas por uma ordem de grandeza!

O melhor algoritmo de compactação com o qual tenho experiência pessoal é paq8o10t (consulte a página zpaq e PDF ).

Dica: o comando para compactar files_or_folders seria como:

paq8o10t -5 archive files_or_folders

Arquive o tamanho x tempo para compactar e extrair 10 GB (79.431 arquivos) em um disco rígido USB externo com configurações padrão e máximas em um laptop Dell Latitude E6510 (Core i7 M620, 2 + 2 hyperthreads, 2.66 GHz, 4 GB, Ubuntu Linux Vinho 1,6).  Dados do benchmark de 10 GB (sistema 4).

Fonte: Utilitário de Backup de Diário Incremental e Archiver

Você pode encontrar um espelho do código-fonte no GitHub .


Um algoritmo de compressão um pouco melhor, e vencedor do Prêmio Hütter, é decomp8 (veja link na página do prêmio). No entanto, não há nenhum programa compressor que você possa realmente usar.


Para arquivos realmente grandes, o lrzip pode atingir taxas de compressão que são simplesmente cômicas .

Um exemplo de README.benchmarks:


Vamos levar seis árvores do kernel com uma versão à parte como tarball, linux-2.6.31 para linux-2.6.36. Eles mostrarão muitas informações redundantes, mas com centenas de megabytes de distância, o que o lrzip será muito bom para compactar. Para simplificar, apenas 7z serão comparados, pois é de longe o melhor compressor de uso geral no momento:

Estes são benchmarks realizados em um Intel Core2 dual core de 2.53Ghz com 4GB de RAM usando o lrzip v0.5.1. Observe que ele estava sendo executado com um espaço do usuário de 32 bits, de forma que apenas o endereçamento de 2 GB era possível. No entanto, o benchmark foi executado com a opção -U, permitindo que o arquivo inteiro seja tratado como uma grande janela de compactação.

Tarball de 6 árvores de kernel consecutivas.

Compression    Size                 Percentage      Compress    Decompress
None           2373713920           100             [n/a]       [n/a]
7z             344088002            14.5            17m26s      1m22s
lrzip          104874109            4.4             11m37s      56s
lrzip -l       223130711            9.4             05m21s      1m01s
lrzip -U       73356070             3.1             08m53s      43s
lrzip -Ul      158851141            6.7             04m31s      35s
lrzip -Uz      62614573             2.6             24m42s      25m30s
Alexander Riccio
fonte
Ele é otimizado para fornecer a máxima taxa de compactação, mas é muito mais lento que os concorrentes próximos.
Eric J.
2
@Eric J. sim, mas a questão não especificou a velocidade de compressão / descompressão;)
Alexander Riccio
3

O Squeezechart.com contém comparações de várias taxas de compactação. Embora, como afirma a resposta da Nifle, é improvável que você obtenha taxas de compactação tão altas para os formatos binários.

idan315
fonte
2

A maioria das ferramentas de compactação possui configurações para permitir que você atinja uma taxa de compactação mais alta, comprometendo tempos de compactação / descompactação mais lentos e mais uso de RAM.

Para o 7-Zip, procure por "Adicionar à caixa de diálogo Arquivo" na ajuda integrada para obter mais detalhes.

Tom Robinson
fonte
2

Você pode tentar 7zip com as seguintes configurações ultra:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on big_file.mysql.7z big_file.mysql
kenorb
fonte
2

Basta verificar o Resumo dos vários testes de benchmark de compactação de arquivos que têm a melhor lista de compactação que consiste no benchmark completo de compactação.

Top 30

insira a descrição da imagem aqui

Top performers (baseados em compressão) neste teste são PAQ8 e WinRK (PWCM). Eles são capazes de comprimir o conjunto de teste de 300 + Mb para menos de 62 Mb (redução de 80% no tamanho), mas levar um mínimo de 8,5 horas para concluir o teste. O programa número um (PAQ8P) leva quase 12 horas e o número quatro (PAQAR) até 17 horas para concluir o teste. WinRK, o programa com a segunda melhor compressão (79,7%) leva cerca de 8,5 horas. Não é de surpreender que todos os programas mencionados façam uso de um mecanismo PAQ (semelhante a) para a compactação. Se você tiver arquivos com imagens incorporadas (por exemplo, arquivos DOC do Word), use o PAQ8, ele os reconhecerá e os compactará separadamente, aumentando significativamente a compactação. Todos os programas mencionados (exceto o WinRK) são gratuitos.

LifeH2O
fonte
1

Sua melhor aposta aqui parece ser tentativa e erro. Experimente todas as suas técnicas de compactação disponíveis em cada arquivo e escolha o melhor para colocar em seu site. Felizmente, os computadores fazem esse tipo de coisa bem rápido e não ficam entediados. Você poderia escrever um script simples para automatizar o processo para que ele fosse "relativamente indolor".

Só não espere milagres - 700 mb até 30 mb simplesmente não acontecem com tanta frequência. Arquivos de log como mencionado acima - sim. "Seu arquivo médio" - de jeito nenhum.

hotei
fonte