Arquivos compactados no Linux

segunda-feira, 23 de junho de 2014



Hoje eu precisei comprimir uns backups e fiquei na dúvida sobre qual formato usar. No "outro sistema" não há dúvidas: O 7zip é o melhor formato. Mas como ele se comporta quando confrontado pelos formatos de compressão existentes no Linux?

Resolvi fazer um teste na prática: Vou comparar diferentes compressões no 7zip e no Tar e medir o tempo dessas compressões usando o comando "time".

O tar é um programa famoso de compressao no linux, sendo ele + os "plugins" o padrão para tudo no mundo do pinguim compactado. Ele é rápido, estável e conhecido. Não possui interface gráfica, apesar do seu uso ser simples. Farei outro post separado disso. Veja os links ao final desse tópico, agora vamos nos manter apenas no teste.

Já o 7zip é famoso lá no windows. É (dos programas que eu conheço) um dos que mais fornece compactação. Instalar ele no linux é muito fácil:

sudo apt-get install p7zip

Diferente do que acontece no windows, aqui no pinguim ele não possui interface gráfica. Mas o comando para usar é simples e farei outro post separado disso. Veja os links ao final desse tópico, vamos nos manter apenas no teste.

Vou mostrar os resultados de duas sessões: Na primeira compactei uma pasta com faixas MP3 e na segunda uma pasta com vários documentos.

Como é um teste prático, fiz duas compactações em cada caso e tirei a média dos resultados. Também fiquei usando o computador durante os testes para escrever o post e navegar na web, tornando os resultados mais próximos do real.


Vamos lá!


Resultados da sessão 1:

A pasta de músicas é de um disco do compositor Vangelis (famosão com trilhas sonoras de filmes) e tem 213,1 MB.

7z c/ compressão ZERO (MIN)
time 7z a -mx0 -t7z Vangelis-mx0.7z Vangelis/
   tempo real     0m0.467s

7z c/ compressão CINCO
time 7z a -mx5 -t7z Vangelis-mx5.7z Vangelis/
  tempo real    0m36.404s

7z c/ compressão NOVE (MAX)
time 7z a -mx9 -t7z Vangelis-mx9.7z Vangelis/
  tempo real    1m17.239s

Ao final, os 3 arquivos foram criados. Lembrando que a pasta inicialmente possui 213,1 MB

213,1 MB Vangelis-mx0.7z
209,9 MB Vangelis-mx5.7z
210,1 MB Vangelis-mx9.7z


Vamos ver com o Tar agora.

Tar c/ compressão ZERO (MIN)
time tar cvf Vangelis.tar Vangelis/
  tempo real    0m0.284s

Tar c/ compressão zip
time tar zcvf Vangelis.tar.gz Vangelis/
  tempo real    0m9.249s

Tar c/ compressão BZIP
time tar jcvf Vangelis.tar.bz2 Vangelis/
  tempo real    0m50.044s

Tar c/ compressão XZ (MAX)
time XZ_OPT=-9 tar cJf Vangelis.tar.xz Vangelis/
  tempo real    3m9.507s

Ao final, os 4 arquivos foram criados. Lembrando que a pasta inicialmente possui 213,1 MB

213,1 MB Vangelis.tar
211,9 MB Vangelis.tar.gz
211,9 MB Vangelis.tar.bz2
209,6 MB Vangelis.tar.xz

O único detalhe dessa rodada de testes é que faixas em MP3 já são arquivos comprimidos, então realmente o resultado esperado era esse: baixa compressão.

Notem também que o tar usando compressão XZ foi o melhor resultado, mas também o mais lento. O 7zip foi 145% mais rápido que ele e apenas 0,3% menos eficiente na compressão.



Resultados da sessão 2:

Agora vamos testar com outro tipo de objeto: Uma pasta com arquivos de backup. Nela, temos 1435 documentos mistos (txt, doc, pdf, xls, jpg, png, zip, etc) e ela possui 1GB.

Vamos repetir o teste com os mesmos parâmetros:

7z c/ compressão ZERO (MIN)
time 7z a -mx0 -t7z docs-mx0.7z docs/
  tempo real    0m3.503s

7z c/ compressão CINCO
time 7z a -mx5 -t7z docs-mx5.7z docs/
  tempo real    5m4.342s

7z c/ compressão NOVE (MAX)
time 7z a -mx9 -t7z docs-mx9.7z docs/
  tempo real    8m0.535s

Ao final, os 3 arquivos foram criados. Lembrando que a pasta inicialmente possui 1,0 GB.

1,0   GB docs-mx0.7z
851,0 MB docs-mx5.7z
841,6 MB docs-mx9.7z



Vamos ver com o Tar agora.
Tar c/ compressão ZERO (MIN)
time tar cvf docs.tar docs/
  tempo real    0m1.429s

Tar c/ compressão zip
time tar zcvf docs.tar.gz docs/
   tempo real    0m45.416s

Tar c/ compressão BZIP
time tar jcvf docs.tar.bz2 docs/
   tempo real    4m5.292s

Tar c/ compressão XZ (MAX)
time XZ_OPT=-9 tar cvJf docs.tar.xz docs/
   tempo real    7m11.906s

Ao final, os 4 arquivos foram criados. Lembrando que a pasta inicialmente possui 1,0 GB.

1,0   GB docs.tar
945,2 MB docs.tar.gz
936,6 MB docs.tar.bz2
826,9 MB docs.tar.xz


Os resultados estão dentro do esperado: Quanto maior a compressão, maior o tempo. Vejam como coseguimos compressão próximas a 15% nos dois programas.

Notem também que o tar usando compressão XZ foi novamente o melhor resultado, sendo o 7zip além de pior, mais lento. O tar foi 12% mais rápido, e aprensentou uma eficiencia 2% maior.

Imagens facilitam visualizar os resultados. Vamos a elas!

Aqui vemos (e era esse o meu intuito inicial) que devemos comparar 7zip-0 com tar, 7zip-5 com gzip/bzip e 7zip-9 com tarxz.

12

Os dois graficos acima são da rodada um, aonde compactamos uma pasta de mp3. Quanto menor as barras, melhor. Notem os melhores resultados de compressão no 7zip5, 7zip9 e no tarXZ.  Note também como o tempo levado no tarXZ é muito mais alto que o do 7zip9.

 34

Esses são os gráficos para as pastas de documentos de 1GB. Quanto menor as barras, melhor. Vejam novamente a pequena diferença de compressão entre 7Zip 5 e 9 e o tar XZ.


E as conclusões?


Eu diria que as duas ferramentas estão equiparadas. Tivemos diferenças de 3~5% entre elas, hora com o Tar ganhando, hora com o 7zip. Eu considero um empate técnico.


Porém 2 ressalvas: 

1) O formato tar.xz não é reconhecido por padrão pelo 7zip do windows. Ele consegue extrair sim, mas vc tem que mandar ele fazer isso. Dar duplo clique não abre o 7zip.

2) O 7Zip não mantém as permissões LINUX dos arquivos. Permissões são uma forma que o sistema usa para separar arquivos de usuários diferentes, arquivos somente leitura, arquivos do root (o administrador), etc. Ou seja, não preservar isso é um defeito muito grande. Então não é bom que se use o 7zip no pinguim. Porém, se vc não se importa com isso, ou se ainda vai manter os seus dados em uma partição NTFS para manter compatibilidade com o windows, não há o motivo para se preocupar com isso.

No final a conclusão é: Se vc vai ficar no linux ou se precisa manter as permissões dos arquivos use o Tar. Se não se importa com isso, a escolha é sua.


Como tudo no mundo Linux. A escolha é sempre sua. Liberdade é isso  :)


Links:
Como usar o 7zip no Linux (em breve)
Como usar o Tar no Linux (em breve)

1 comentários:

Phoenix disse...

Estava procurando sobre o assunto e caí aqui. Coincidência?
Muito bom. =)

Obrigado.