Capítulo 11. Utilizando compactadores
Para compactar arquivos, usaremos o gzip, que é distribuído nos termos da GNU. Existem outros compactadores, como o unzip, zip, compress, bzip, unarj, e muitos outros que funcionam da mesma maneira que no formato DOS, mas a maioria dos arquivos pra Linux na Internet são compactados com o gzip, acompanhado do tar, que também abordaremos agora.
Suponhamos que você tenha o seguinte arquivo em um diretório:
[root@guarani /root]# ls -l
-rwxr-xr-x 2 root users 16000 Nov 04 14:00 teste
[root@guarani /root]# gzip teste
[root@guarani /root]# ls -l
-rwxr-xr-x 2 root users 900 Nov 04 14:01 teste.gz
Note que o antigo arquivo, teste, foi deletado depois que o gzip passou sem problemas.
Geralmente os arquivos, quando compactados no Linux, mantém a mesma extensão.
Ex.:
- teste.txt (antes)
- teste.txt.gz (depois)
Para se descompactar um arquivo *.z ou *.gz, usa-se o comando gunzip, da seguinte forma:
[root@guarani /root]# ls -l
-rwxr-xr-x 2 root users 900 Nov 04 14:01 teste.gz
[root@guarani /root]# gunzip teste.gz
[root@guarani /root]# ls -l
-rwxr-xr-x 2 root users 16000 Nov 04 14:01 teste
Note-se também que o antigo arquivo compactado foi deletado. O gzip não funciona igual ao pkzip e winzip quando se trata de diretórios. Para se compactar múltiplos arquivos e diretórios diferentes, usa-se a associação do comando tar com o comando gzip.
O tar é um comando designado para criação de arquivos que contêm diversos outros arquivos internamente. Usado muito na criação de backup’s em programas e sistemas empresariais devido a sua característica de poder unir arquivos e diretórios em apenas um arquivo. Nas empresas que usam o tar, geralmente usam a própria data do dia como nome para os arquivos de backup.
Exemplo:
[root@guarani /backup]# ls -l
-rwxr-xr-x 2 root root 11524211 Dez 29 14:01 bkp29121998
Seu uso, bastante simples, é feito da seguinte forma:
tar <opções> <arquivos>
OPÇÕES :
- c - cria um novo arquivo tar.
- t - lista o conteúdo do arquivo tar.
- x - extrai o conteúdo do arquivo tar.
- v - mostra na tela os arquivos que estão sendo compactados/descompactados
- f - arquivo de origem/destino.
- z - filtra o arquivo com gzip.
- r - para colocar novos arquivos no final do arquivo .tar
- u - para fazer um update nos arquivos do arquivo .tar
- d - para comparar o conteúdo do arquivo com arquivos do sistema
- k - para manter arquivos existentes no diretório.
Imagine, por exemplo, que você tenha um diretório chamado “teste” com os seguintes arquivos:
[root@guarani /teste]# ls -l
-rwxr-xr-x 1 root root 21 Nov 08 16:06 Makefile
-rwxr--r-- 1 root root 847 Dez 11 04:41 README
-r-xr-xr-x 1 root root 9254 Mar 16 12:55 teste.txt
-rw-rw-rw- 1 root root 36 Jul 01 09:56 alysson.net
-rwxrwxrwx 1 root root 395 Nov 12 11:26 lixo
-rwxr-xr-x 1 root root 1223 Mai 29 06:01 profile
Para que compactemos este diretório, é necessário que antes de tudo, criar um arquivo .tar
[root@guarani /]# tar cvf teste.tar teste
teste/
teste/Makefile
teste/README
teste/teste.txt
teste/alysson.net
teste/lixo
teste/profile
[root@guarani /]# ls -l
-rwxr-xr-x 1 root root 11776 Nov 18 16:52 teste.tar
O comando digitado irá juntar todo o conteúdo do diretório em um único arquivo .tar. A opção “v” é para que possamos ver o que está sendo colocado no arquivo teste.tar.
Note que esse novo arquivo contem o número somado de bytes dos arquivo que estavam no diretório teste.
Para se compactar este arquivo, usa-se o comando gzip da seguinte forma:
[root@guarani /]# gzip -9 teste.tar
[root@guarani /]# ls -l
-rwxr-xr-x 1 root root 921 Nov 18 16:54 teste.tar.gz
O inconveniente disso, é que temos que fazer o tar e depois compactá-lo. Para economizar tempo, usa-se a seguinte linha de comando:
[root@guarani /]# tar cvf teste.tar teste | gzip > teste.tar
[root@guarani /]# ls -l
-rwxr-xr-x 1 root root 921 Nov 18 16:54 teste.tar.gz
Para se descompactar um arquivo dessa forma, usa-se o comando:
[root@guarani /]# tar xvfz teste.tar.gz
[root@guarani /]# ls -l
-rwxr-xr-x 1 root root 21 Nov 08 16:06 Makefile
-rwxr--r-- 1 root root 847 Dez 11 04:41 README
-r-xr-xr-x 1 root root 9254 Mar 16 12:55 teste.txt
-rw-rw-rw- 1 root root 36 Jul 01 09:56 alysson.net
-rwxrwxrwx 1 root root 395 Nov 12 11:26 lixo
-rwxr-xr-x 1 root root 1223 Mai 29 06:01 profile
Outro Exemplo :
[marisa@guarani /tmp]$ l -d textos
drwxrwxr-x 4 marisa marisa 1024 jul 23 11:44 textos/
[marisa@guarani /tmp]$ tar cvzf textos.tgz textos
textos/
textos/perl/
textos/java/
[marisa@guarani /tmp]$ l textos.tgz
-rw-rw-r-- 1 marisa marisa 155 jul 29 11:24 textos.tgz
[marisa@guarani /tmp]$ tar tvzf textos.tgz
drwxrwxr-x marisa/marisa 0 1998-07-23 11:44 textos/
drwxrwxr-x marisa/marisa 0 1998-07-23 11:38 textos/perl/
drwxrwxr-x marisa/marisa 0 1998-07-23 11:38 textos/java/