Arquivos compactados no Linux
Autor: Diego | Publicado: 2014-06-23T16:36:00-03:00




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/
&nbsp; &nbsp;tempo real&nbsp;&nbsp;&nbsp;&nbsp; 0m0.467s

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

7z c/ compressão NOVE (MAX)
time 7z a -mx9 -t7z Vangelis-mx9.7z Vangelis/
&nbsp; tempo real&nbsp;&nbsp;&nbsp; 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/
&nbsp; tempo real&nbsp;&nbsp;&nbsp; 0m0.284s

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

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

Tar c/ compressão XZ (MAX)
time XZ_OPT=-9 tar cJf Vangelis.tar.xz Vangelis/
&nbsp; tempo real&nbsp;&nbsp;&nbsp; 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/
&nbsp; tempo real&nbsp;&nbsp;&nbsp; 0m3.503s

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

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

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

1,0&nbsp;&nbsp; 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/
&nbsp; tempo real&nbsp;&nbsp;&nbsp; 0m1.429s

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

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

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

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

1,0&nbsp;&nbsp; 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.



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.&nbsp; Note também como o tempo levado no tarXZ é muito mais alto que o do 7zip9.

&nbsp;

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:&nbsp; 

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.&nbsp;Liberdade é isso &nbsp;:)


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