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)Ao final, os 3 arquivos foram criados. Lembrando que a pasta inicialmente possui 213,1 MB
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
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:
Ao final, os 3 arquivos foram criados. Lembrando que a pasta inicialmente possui 1,0 GB.
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
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)Ao final, os 4 arquivos foram criados. Lembrando que a pasta inicialmente possui 1,0 GB.
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
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.
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.
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
Muito bom. =)
Obrigado.