Servidor Linux


Dicas para compactar e descompactar arquivos

Posted in Backup,tar,zip por eduroges em abril 2, 2008
Tags:

Este é um pequeno guia rápido para que você possa compactar, descompactar e visualizar arquivos no console do linux.

Introdução

GZIP e TAR são dois utilitários muito usados no Linux para a compactação de arquivos. Muitos dos programas e documentos disponíveis na Internet para Linux, se encontram nestes formatos. Este tutorial mostrará como usar os recursos básicos destas duas ferramentas.

GZIP: Arquivos do tipo .gz

O GZIP é um software de compressão criado para gerar uma cópia compactada de um arquivo. Ele não é capaz de compactar vários arquivos em um só. Mesmo compactando apenas um arquivo por vez, o GZIP o faz de maneira muito eficiente. Por isso é amplamente usado. Para usá-lo, a síntase é gzip [parâmetros] [arquivo], onde gzip é o nome do comando, parâmetros são opções para a operação (ver lista de parâmetros abaixo) e arquivo, obviamente, o arquivo que será compactado/descompactado. A seguir, é mostrado uma lista básica de parãmetros para a utilização do GZIP.

Parâmetros

A lista abaixo mostra alguns parâmetros que podem ser usados. É possível usar mais de um ao mesmo tempo:

c – mantém o arquivo original;
d – descompacta um arquivo comprimido;
l – lista o conteúdo de arquivos comprimidos;
v – exibe saída detalhada;
1 – compressão rápida;
9 – melhor compressão.

Abaixo, há exemplos, para os quais utilizaremos o arquivo arquivo.txt:

gzip arquivo.txt – compacta removendo o arquivo original e criando o arquivo arquivo.txt.gz;
gzip -c arquivo.ext – faz o mesmo que a operação acima, mas mantém o arquivo original;
gzip -9 nome.ext – faz uma compactação maior, removendo o arquivo original e criando o arquivo arquivo.txt.gz;
gzip -cv1 file1.txt file2.txt – compactação baixa, mantendo o arquivo original e criando os arquivos file1.txt.gz e file2.ext.gz. O parãmetro ‘v’ faz com que seja mostrado detalhes da operação;
gzip -l infowester.gz – lista o conteúdo do arquivo infowester.gz;
gzip -d arquivo.txt.gz – descompacta o arquivo arquivo.txt.gz.

TAR: Arquivos do tipo .tar e .tar.gz

O que o GZIP não consegue fazer, o TAR (Tape ARchives) faz. Ele é um aplicativo capaz de armazenar vários arquivos em um só. Porém, não é capaz de compactar os arquivos armazenados. Como é possível notar, o TAR serve de complemento para o GZIP e vice-versa. Por isso, foi criado um parâmetro no TAR para que ambos os programas possam trabalhar juntos. Assim, o TAR “junta” os arquivos em um só. Este arquivo, por sua vez, é então compactado pela GZIP. Quando ocorre o trabalho conjunto entre TAR e GZIP, o arquivo formado tem a extensão tar.gz.

O TAR também consegue gravar a propriedade e as permissões dos arquivos. Ainda, consegue manter a estrutura de diretórios original (se houve compactação com diretórios), assim como as ligações diretas e simbólicas.

Para utlizar o TAR, a síntaxe é tar [parâmetros] [-f arquivo] [-C diretório] [arquivos…]. Abaixo, segue a lista de parâmetros.

Parâmetros

-c – cria um novo arquivo tar;
-M – cria, lista ou extrai um arquivo multivolume;
-p – mantém as permissões originais do(s) arquivo(s);
-r – acrescenta arquivos a um arquivo tar;
-t – exibe o conteúdo de um arquivo tar;
-v – exibe detalhes da operação;
-w – pede confirmação antes de cada ação;
-x – extrai arquivos de um arquivo tar;
-z – comprime o arquivo tar resultante com o gzip;
-f – especifica o arquivo tar a ser usado;
-C – especifica o diretório dos arquivos a serem armazenados.

A seguir mostramos exemplos de utlização do TAR. Em alguns parâmetros o uso de ‘-‘ (hífen) não é necessário. Desta vez, os comandos não serão explicados. Execute-os e descubra o que cada um faz. Repare na combinação de parâmetros e tente entendê-la. Assim, você saberá exatamente o que está fazendo. Bom aprendizado!

tar -c pasta > arq.tar
tar -cvf arq.tar arq1 arq2
tar -cvf /dev/fd0 /dir1/*
tar -cvMf /dev/fd0 /dir1 /dir2/subdir /dir3
tar -c -v -f arq.tar *.ext
tar cwf arq.tar pasta
tar -czvf /pasta/arq.tgz *
tar czwf arq.tar.gz -C /dir1 arq1 -C /dir2 arq2 arq3
tar -rf arq.tar arq*
tar -tf arq.tar
tar -xv -f arq.tar
tar xvMf /dev/fd0
tar xf arq.tar pasta/arq1
tar xzvf /pasta/subdir/arq.tar.gz
tar -xzwf arq.tgz

Outros Exemplos:

Para fazer os backups, utilizando o comando “tar”. Vamos primeiro criar um exemplo de arquivo de backup:

tar -cf maquina-backup-full-20030212.tar /etc /var/named /var/log
bzip2 maquina-backup-full-20030212.tar

O que fiz foi armazenar os arquivos dos diretórios “/etc”, “/var/named” e “/var/log” no arquivo maquina-backup-20030212.tar, e depois compactá-lo no formato bzip2 (uma compactação melhor, mas que requer mais processamento), gerando então o arquivo “maquina-backup-20030212.tar.bz2”. Este mesmo comando pode ser feito em uma linha só:

tar -jcf maquina-backup-full-20030212.tar.bz2 /etc /var/named /var/log

Agora o mesmo backup comoutra forma de compactação (utilizando o programa gzip ao invés do bzip2)

tar -zcf maquina-backup-full-20030212.tar.gz /etc /var/named /var/log

Agora vamos supor que eu alterei o conteúdo do diretório “/etc”, adicionando um arquivo chamado “teste” e modificando o arquivo “crontab”. Para não ter que fazer um backup total novamente, eu posso incrementar este backup somente com as modificações feitas. Para isso eu utilizo o seguinte comando:

find /etc /var/named /var/log -mtime -1 -type f -print | \
tar zcvf maquina-backup-incremental-20030212.tar.gz -T –

Aqui o Linux vai procurar por arquivos modificados numa faixa de 1 dia (usado para backups incrementais diários) e armazená-los no arquivo “maquina-backup-incremental-20030212.tar.gz”. Vejamos agora um backup feito com os arquivos modificados numa faixa de uma semana:

find /etc /var/named /var/log -mtime -7 -type f -print | \
tar zcvf maquina-backup-incremental-20030212.tar.gz -T –

Agora se você quiser automatizar, e poupar trabalho, use para a nomeação do arquivo o comando “date”, gerando assim a data no arquivo. Veja o exemplo dessa compactação:

# tar zcf backup-full-`date +%Y%m%d`.tar.gz /etc
# ls
backup-full-20030212.tar.gz

Agora que você já aprendeu a fazer os backups, vamos armazená-lo remotamente. Eu assumo que você já tenha configurado um servidor FTP em outra máquina, se você ainda não fez isso, faça. Depois adicione um usuário com uma certa senha para acessar este ftp. Aqui no tutorial vamos usar como usuário: “backup” e como senha: “segredo”. Utilize o seguinte script para automatizar o processo:

#!/bin/bash
#
DATA=`date +%Y_%m_%d`

# Dados do arquivo de backup
MAQUINA=”sakura”
ARQUIVO=”backup-full-$MAQUINA-$DATA.tar.gz”
DIRETORIOS=”/etc /var/log”

# Dados do servidor FTP
HOST_FTP=”192.168.0.1″
USUARIO_FTP=”backup”
SENHA_FTP=”segredo”

# A partir daqui não precisa mais editar.
# Cria o arquivo .tar.gz no /tmp (Temporário)
cd /tmp
tar zcf /tmp/$ARQUIVO $DIRETORIOS

# Acessa o FTP e coloca os arquivos
ftp -in <<EOF
open $HOST_FTP
user $USUARIO_FTP $SENHA_FTP
bin
lcd /tmp
dele $ARQUIVO
put $ARQUIVO
bye
EOF

# Remove os arquivos temporarios
rm -rf /tmp/$ARQUIVO

Pronto! Lembre-se de proteger este arquivo aos olhos alheios, porque a senha do usuário do FTP está visível. Este pequeno script shell cria um backup dos diretórios “/etc” e “/var/log”, conecta ao servidor FTP e envia o arquivo. Você só precisará alterar as variáveis do começo do arquivo para as suas necessidades.

Uma resposta to 'Dicas para compactar e descompactar arquivos'

Subscribe to comments with RSS ou TrackBack to 'Dicas para compactar e descompactar arquivos'.

  1. red soldier said,

    Muito bom mesmo gostei foi de grande valia pra mim que estava cheio de dúvidas!!!


Deixe um comentário