Compactadores

Muito se fala sobre empacotar e compactar no Linux. Nesse post, vou falar sobre os aplicativos que são utilizados para empacotar e compactar.

Falando de compactar, no Linux temos os populares gzip e o bzip2, e para empacotar, temos o tar!

O tar so empacota! Se você quer juntar vários arquivos em só, como se quisesse deixar tudo organizado dentro de uma caixa… é com o tar que você trabalha! Mas é bom falar também que o tar não comprime! Ele só faz o pacote!

Agora, se quiser diminuir o tamanho de um arquivo, temos que usar os compactadores, no caso o gzip ou bzip2.

Uma coisa interessante é que, apesar de termos aplicativos separados (empacotador, compactador), isso não impede de usarmos eles juntos… que é como veremos mais a frente!

Então, primeiro vamos analisar cada um separadamente e depois vamos unir as forças :).

Bem, lá em cima, eu falei que no linux temos o gzip e o bzip2. Ambos tem a mesma função: compactar! Ou seja, reduzem o tamanho do arquivo! E assim como tudo no mundo, bzip2 e gzip tem suas vantagens e desvantagens. Isso quer dizer que, dependendo da situação, você escolhe qual o melhor para ser utilizado!

O bzip2 é a nova versão de compactadores, e tem um poder de compactação maior que o gzip. Por exemplo, se tenho um arquivo muito grande, é melhor usar um compactador que compacte o máximo possível! Agora, se for arquivos pequenos, o gzip ja da conta do recado.

E uma outra diferença entre o gzip e o bzip2 é que o gzip leva menos tempo para comprimir arquivos que o bzip2, que, por ter um poder de compressão maior, acaba sendo um pouco mais lento!

Resumindo… seria mais ou menos assim:

gzip – Rápido, porém não muito eficiente na redução de tamanho.

bzip2 – Lento, porém muito eficiente na redução de tamanho.

Vamos ver um exemplo de uso deles criando um arquivo grande para testar os dois compactadores. Vamos entrar no diretório /tmp e criar um script para mostrar esse teste:

# cd /tmp/

# while true
> do
> cat /etc/passwd >> usuarios.txt
> done

Nesse script, estamos criando um loop infinito deixando o usuarios.txt sempre com o conteúdo do passwd, e para parar basta teclar CTRL+C.

Vamos deixar o script rodando por um tempo, pode ser uns 20 segundos… e os ‘>’ não precisam ser digitados porque vai aparecer quando estiver executando os comandos!

Depois de parar, vamos ver o tamanho do arquivo que o script gerou:

# du -hs usuarios.txt
3,7M    usuarios.txt

O comando du, é usado para medir o tamanho de um arquivo ou diretório. Vamos aproveitar e fazer uma cópia do arquivo para testarmos os compactadores:

# cp usuarios.txt usuarios2.txt

Vamos ver o exemplo com o gzip:

# time gzip usuarios.txt

real    0m0.109s
user    0m0.088s
sys     0m0.020s

E agora com o bzip2:

# time bzip2 usuarios2.txt

real    0m11.280s
user    0m8.993s
sys     0m0.116s

O time é um comando bem útil quando se quer medir o tempo que um processo é executado.. Vejam pela saída do comando acima que o bzip2 demora mais que o gzip!

Uma breve explicação sobre a saída do comando time: o real, é o tempo total que o processo levou para ser executado; ja o user, é o tempo que o processo utilizou diretamente a cpu no modo usuário e, finalmente, sys, é o tempo utilizado da cpu pelo processo no modo kernel.

Continuando, se executarmos um ls agora no /tmp, vamos ter 2 arquivos, um com a extensão gz e outro com bz2:

# ls usuarios*
usuarios2.txt.bz2  usuarios.txt.gz

Agora vamos comparar o tamanho dos arquivos:

# du -hs usuarios*
8,0K    usuarios2.txt.bz2
24K     usuarios.txt.gz

Resumindo, vemos que no quesito tempo, o gzip ganhou, mas perdeu em redução de tamanho! Mas o mais importante e que tanto o gzip quanto o bzip2 compactam arquivos e você e quem escolhe qual deles prefere usar dependendo da situação 😉 !

No próximo post, vou falar sobre o tar trabalhando com o gzip e o bzip2. Até lá! 🙂

Anúncios