Victor3D

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/