Melhor método de compressão?

53

Quero compactar uma pasta de 16 GB, mas qual é o melhor método? tar.gz? tar.bz2 rar? 7z? O arquivo seria menor se eu compactasse primeiro um método, depois copiasse o arquivo compactado para uma nova pasta e depois compactasse novamente em outro método? Eu preciso ajustá-lo em um DVD (saída talvez 8,5 GB, não me lembro), mas colocar "4370 MB" faz com que o arquivo compactado faça parte de 2,5 GB.

BTW, qual é o método de compactação padrão no Ubuntu?

Amanda
fonte

Respostas:

70

O padrão é gz. Os melhores resultados que eu recebo 7zembora.

Aqui estão os resultados para um contêiner de caixa virtual de 1.4 Gb:

insira a descrição da imagem aqui

Melhor tamanho de compactação em MB:

7z 493
rar 523
bz2 592
lzh 607
gz 614
Z 614
zip 614
.arj 615
lzo 737
zoo 890

Fonte

insira a descrição da imagem aqui

Instalar

 sudo apt-get install p7zip-full
Rinzwind
fonte
Obrigado, eu já instalei o 7z e o rar via Software Center. Vou tentar com 7z.
Amanda
11
De onde vêm esses resultados? Para cada algoritmo, a taxa de compressão e a velocidade dependem muito do que você está tentando compactar. Tente compactar alguns dados provenientes /dev/urandom: você obterá resultados diferentes a cada tentativa. Ou tente /dev/zero: bzip2 é o vencedor (para a proporção).
Andrea Corbellini
11
@AndreaCorbellini o link está na resposta, então clique nele !? e como eu disse: é baseado em um contêiner de caixa virtual 1.4. Concordo que a compressão depende muito de quais arquivos que são apenas de alguns anos de experiência 7z parece ser melhor para os arquivos que eu tendem a ter (principalmente software e arquivos de dados binários)
Rinzwind
11
@Rinzwind: Sinto muito, não vi o link Fonte .
Andrea Corbellini
11
@AndreaCorbellini está tudo bem;) espero que amanda
reporte
14

Esta pergunta é muito antiga, mas talvez alguém ache esta solução útil:

Use rzipdepois tar. Primeiro, compacta blocos de dados grandes de 900 MB usando um método de dicionário e depois entrega os dados limpos bzip2. É muito mais rápido que as outras ferramentas de compactação fortes ( bzip2, lzma) e alguns arquivos compactados ainda melhor que bzip2ou lzma.

Sim, gzé a ferramenta de compactação padrão no Linux. É rápido e, apesar de sua idade, ainda oferece resultados muito bons na compactação de arquivos de texto como o código-fonte. Outra ferramenta padrão é bzip2, embora seja muito mais lenta.

Adição: lrzip é mais recente e estende o princípio de rzip. Ele suporta até tamanhos de bloco ilimitados e uma escolha de métodos de compactação (LZMA, Bzip2, Gzip, LZO, ZPAQ ou nenhum). LZMA é o padrão. Para backup ou se você compartilha muitos dados com outros usuários de Linux / BSD, pode ser realmente útil.

user258532
fonte
Eu acho que você quis dizer blocos de 900 kB? 900 MB seria um pouco grande ...
Byte Commander
11
Na verdade, é 900 MB. Veja en.wikipedia.org/wiki/Rzip
user258532
2

Eu opto por a LZMA. Possui a menor sobrecarga de bytes e possui forte taxa de compactação. Comparação entre ZIP e LZMA: gerei dois arquivos seq.txtcom código PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

que contém blocos repetidos de 0..9 dígitos ~ 1Mb de dados e rnd.txtcom código PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

que contém blocos aleatórios de 0..9 dígitos ~ 1Mb de dados.

Resultados de compactação:

  • seq.txt, rnd.txt - 1100000 bytes
  • seq.txt.zip - 2502 bytes
  • rnd.txt.zip - 515957 bytes
  • seq.txt.lzma - 257 bytes
  • rnd.txt.lzma - 484939 bytes

Taxa de compressão:

  • ZIP -> "seq.txt" -> 99,772%
  • ZIP -> "rnd.txt" -> 53,094%
  • LZMA -> "seq.txt" -> 99,976%
  • LZMA -> "rnd.txt" -> 55.914%

Portanto, o LZMA compactou os dados seqüenciais em 0,2% mais efetivamente que o ZIP
e os dados aleatórios 2,8% mais efetivamente que o ZIP.

Com certeza o LZMA vence!

Agnius Vasiliauskas
fonte