Qual método de arquivamento é melhor para compactar arquivos de texto no Linux?


16

No meu aplicativo, preciso compactar os logs que são arquivos de texto.

Parece que bzip2e gziptem a mesma taxa de compressão.

Isso está correto?


xz (do xz-tools ou 7z do p7zip, é muito parecido com o lzma) é o melhor. O bzip2 é melhor que o gzip.
osgx

Respostas:


4

Normalmente, o bz2 tem uma melhor taxa de compactação, combinada com melhores recursos de recuperação.

OTOH, gz é mais rápido.

Diz-se que xz é ainda melhor que bz2, mas não sei o comportamento do tempo.


xz é mais lento que bzip2.
osgx

O xz não é apenas mais lento, mas o arquivo de 300 mb muito mais lento levou cerca de 30 segundos para o bzip2 compactar. Eu matei xz depois de ter sido comprimindo por mais de 5 minutos
Tebe

@ Копать_Шо_я_нашел Eu acho que depende muito do nível de compressão que você escolher. Com -1, não é tão lento, mas com as configurações padrão, ele tende a ser bastante lento.
glglgl

7

A última atualização do maximumcompression.com é junho de 2011 (resposta atualizada em outubro de 2015)
Portanto, este site não menciona
o atual compressor de texto campeão em todo o mundo :

      cmix

Competições / Benchmarks:

Detalhes:
Byron Knoll está se desenvolvendo ativamente cmixcomo software livre (GPL) desde 2013, com base no livro Data Compression Explained por Matt Mahoney . Matt Mahoney também mantém alguns dos benchmarks acima e propõe o ZPAQ ( WP ), um arquivador incremental da linha de comando.


Se você preferir uma ferramenta mais padrão (exigindo menos RAM), recomendo:

      lrzip

lrzipé uma evolução rzippor Con Kolivas .
lrzipsignifica dois nomes: Long Range ZIP e Lzma RZIP .
lrzipgeralmente é melhor que xz(outra ferramenta de compactação popular).
Alexander Riccio também recomenda lrzip.


Meu favorito é:

      zpaq

O "especialista em arquivadores" , Matt Mahoney , trabalha intensivamente nos algoritmos de PAQ há dez anos e fornece o melhor compromisso entre os recursos de CPU / memória e o nível de compactação.

No entanto, a última zpaqversão nem sempre é empacotada / disponível na distribuição recente :-(
Sempre a compilo a partir de fontes quando tenho uma máquina nova e preciso de um compressor muito bom: https://github.com/zpaq/zpaq

clone https://github.com/zpaq/zpaq
cd zpaq
g++ -O3 -march=native -Dunix zpaq.cpp libzpaq.cpp -pthread -o zpaq


1

Eu fiz um ponto de referência para teste para comprimir o seguinte:
pasta 204MB (com arquivos 1.600 html)
resultados

7zip =>     2.38 MB
winrar =>   49.5 MB
zip =>      50.8 MB
gzip =>     51.9 MB

então o 7zip é o melhor dentre eles, você pode obtê-lo aqui
http://www.7-zip.org/


0

O bz2 possui uma compressão mais rígida, o algoritmo tem mais opções para procurar redundância para comprimir.

O gzip possui muito mais ferramentas e é mais multiplataforma. Mais ferramentas do Windows podem lidar com arquivos .gz. É parte do http, para que até os navegadores da web possam entendê-lo.

No linux, existem ferramentas que permitem trabalhar diretamente em arquivos compactados. O zgrep e o bzgrep podem procurar em arquivos compactados.

Se apenas no Linux, eu usaria bzip2, para as taxas de compressão um pouco melhores.


0

O xz comprime muito melhor que o bz2, mas leva mais tempo. Portanto, se a compactação máxima é sua meta e o espaço no disco rígido é muito alto (que é o meu caso com uma unidade com 98% de capacidade - enquanto eu reorganizo meus sistemas de arquivos), e você pode disparar um script para fazer o trabalho - faça uma pausa e volte em 5 minutos.

O unxz é muito rápido para descomprimir na minha experiência - o que é uma coisa boa para mim diariamente.

O bz2 é mais rápido para compactar do que xz, mas não parece alcançar os resultados de compactação de xz.

A única maneira de fazer essas avaliações é executar benchmarks em uma mistura de arquivos comuns que você normalmente compactaria / descompactará e variará os parâmetros para ver qual sai por cima.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.