-
Utilização do aplicativo tar para
criação de backups
Por que usar o tar para backup?
O método mais simples de se fazer um backup é
utilizando o tar para armazenar todos os
arquivos do sistema ou apenas os arquivos em um conjunto de
diretórios específicos. Utilizando o tar em conjunto
com os compactadores gzip (opcão z)
ou bzip2 (opcão I), é
possível armazenar e compactar os arquivos ao mesmo tempo em
um único tarfile.
A criação de backups utilizando o tar fornece flexibilidade e simplicidade de uso.
Parâmetros principais:
-c : |
criar um novo arquivo tar |
-x : |
extrai arquivos de um arquivo tar |
-t : |
lista o conteúdo de um arquivo tar |
-f : |
usar o arquivo file ou o dispositivo F (padrão
/dev/rmt0) |
-z : |
filtra os arquivos através de gzip |
-I : |
filtra os arquivos através de Bzip2 |
-v : |
mostra a lista dos arquivos processados |
-M : |
cria/lista/extrai arquivos multivolumes |
-
Fazendo backups de fita utilizando o tar
Para criação de backups em fita com o tar, utiliza-se o seguinte comando:
[root@localhost]# tar -cvf /dev/rft0 /home /etc
|
No exemplo acima, é feito o armazenamento em fita dos
diretório /home e /etc do sistema, utilizando da compactacão
do gzip.
Obs.: Para utilizar do backup em fita, é
necessário que o módulo referente à fita
esteja ativado no sistema para reconhecimento do dispositivo.
Normalmente é necessário, e recomendável, a
leitura da fita para verificação de qual backup foi
criado e quais os arquivos presentes nele.
Para listagem destes arquivos em fita, utiliza-se o seguinte
comando:
[root@localhost]# tar -tvf /dev/rft0
|
Caso o backup seja finalizado sem ocupar todo o espaço
disponível em fita, será necessário rebobinar
a fita.
Para isto, execute o seguinte comando:
[root@localhost]# mt -f /dev/rft0 rewind
|
Caso não possua o comando mt, instale o pacote relativo
ao mesmo:
Insira o CD1 no drive e como root digite os seguintes
comandos:
[root@localhost]# mount /mnt/cdrom
|
[root@localhost]# cd /mnt/cdrom/conectiva/RPMS
|
[root@localhost]# rpm -ivh mt-st*
|
Obs.: Os procedimentos acima consideram
/dev/rft0 como padrão de dispositivo de fita.
Verifique em seu sistema qual dispositivo está sendo
utilizado.
-
Como fazer backup em disquete
Para criação de backups em disquete, é
utilizado o mesmo comando anterior, modificando somente o
dispositivo em questão:
[root@localhost]# tar -cvf /dev/fd0 /home
|
Múltiplos volumes
Como o disquete ou fita tem uma capacidade bem limitada de
armazenamento, é possível criar armazenamento em
_múltiplos volumes_.
Fornecendo a opção M ao tar, será
solicitado um novo volume para continuação
doarmazenamento em questão, apenas atentando para a ordem de
criacão dos múltiplos volumes:
[root@localhost]# tar cvMf /dev/fd0 /home /etc
|
Outra opcão é utilizar do comando split para
fragmentar o arquivo em questão e do comando cat para
restaurar ao arquivo original.
Exemplo:
Considerando um arquivo chamado
teste.tar.gz já criado e presente no diretório
teste:
[root@localhost teste]# l
total 204
drwxr-xr-x 2 root root 4096 Jun 5 16:51 ./
drwxr-x--- 24 root root 4096 Jun 5 16:49 ../
-rw-r--r-- 1 root root 194041 Jun 5 16:46 teste.tar.gz
|
Tamanho relativo ao diretório teste:
[root@localhost teste]# du -hs
200k
|
Fragmentar o arquivo em vários pedaços
relativamente com o tamanho definido (no exemplo abaixo, 50000
bytes):
[root@eclipse teste]# split -b 50000 teste.tar.gz
|
[root@eclipse teste]# l
total 416
drwxr-xr-x 2 root root 4096 Jun 5 16:51 ./
drwxr-x--- 24 root root 4096 Jun 5 16:49 ../
-rw-r--r-- 1 root root 194041 Jun 5 16:46 teste.tar.gz
-rw-r--r-- 1 root root 50000 Jun 5 16:51 xaa
-rw-r--r-- 1 root root 50000 Jun 5 16:51 xab
-rw-r--r-- 1 root root 50000 Jun 5 16:51 xac
-rw-r--r-- 1 root root 44041 Jun 5 16:51 xad
|
E agora para ter o arquivo inteiro novamente, basta utilizar do
comando cat da seguinte maneira:
[root@localhost teste]# cat xaa xab xac xad > teste2.tar.gz
|
Obs.: Atente à sequência criada para
restauracão do arquivo original.
-
Criar backups agendados utilizando o cron
Caso seja necessário criar backups periodicamente,
pode-se combinar o servidor de comandos agendados cron com o
comando ou script.
Simplesmente programe a data no cron para execução
do determinado comando de criação de backup.
No exemplo abaixo, o cron está agendado para executar o
backup dos diretórios /home e /etc às duas horas da
manhã:
0 2 * * * root tar cvf /dev/rft0 /home /etc
|
Maiores informacões:
[root@localhost]# man crontab
[root@localhost]# man 5 crontab
|
-
Scripts de backup
Utilizar de scripts para o armazenamento de arquivos é
muito útil para se obter um backup mais agilizado do
sistema.
Segue abaixo um exemplo de utilizacão de um script de
backup.
Os arquivos são gravados diariamente e enviados via email
para uma ou mais máquinas ou pessoas, onde são
gravados em um arquivo em disco.
A automatização via cron, pode ser criada
através da inclusão no arquivo
/etc/crontab de uma linha como:
0 0 * * * /usr/local/etc/saveconfig 1> /dev/null 2> /dev/null
|
Desta forma, todos os dias, as 00:00 horas, o script /usr/local/etc/saveconfig é executado. Para
melhor entender o procedimento, encontra-se abaixo o script
saveconfig, contendo explicações detalhadas sobre os
passos seguidos:
#!/bin/sh
#
# Script para realização de backup de
arquivos de
# configuração
# via correio eletronico
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
export PATH
# A seguir é criado um arquivo no formato tar,
# contendo todos os arquivos
# de configuração que se deseja salvar. A lista
dos
# arquivos deve ser
# criada em conjunto com todos os usuários e
# administradores da máquina
# Observar que o arquivo é criado com
diretórios
# relativos, ou seja,
# iniciados em "." para facilitar a expansão do
# arquivo tar em qualquer
# localização.
# O arquivo tar criado é compactado utilizando-se o
# programa gzip
# e redirecionado para o arquivo
# /tmp/machine.config.tar.gz
cd /
tar cvf - \
./var/spool/cron \
./var/named \
./etc/aliases \
./etc/dumpdates \
./etc/gated.conf \
./etc/group \
./etc/hostname.le0 \
./etc/hostname.le1 \
./etc/hosts \
./etc/hosts.equiv \
./etc/hosts.equiv \
./etc/inet \
./etc/vfstab \
./etc/vold.conf | gzip >
/tmp/machine.config.tar.gz
# Neste ponto, o formato do arquivo é transformado
# pelo comando
# uuencode para permitir a sua transferência via mail
uuencode /tmp/machine.config.tar.gz machine.config.tar.gz \
> /tmp/machine.config.tar.gz.uu
# Em seguida, o arquivo é enviado para a(s)
máquinas
# de destino
# onde deverá ser criado um alias que se
encarregará
# de realizar
# a gravação no local apropriado. Incluir
na(s)
# máquina(s) de destino,
# no arquivo /etc/aliases, uma linha do tipo:
# backup: "|/usr/local/bin/deliver -b
# /usr/local/doc/backups/machine
#
# Recomenda-se também a encriptação da
mensagem para
# aumentar
# a segurança deste esquema visto que
informações
# confidenciais
# estarão sendo enviadas.
# O programa deliver é de domínio público e
serve
# para fazer a sincronização
# de gravação no arquivo de destino, no caso,
# /usr/local/doc/backups/machine.
# De tempos em tempos este arquivo deve ser examinado
# e removidas as mensagens
# mais antigas (manual ou automaticamente).
#
# No nosso exemplo, o arquivo de backup é enviado
# para o usuário para o alias backup na
máquina
# domínio.com.br.
mail -s "Configuracao `date +%d/%m` (machine)"
usuário backup@domínio.com.br <
/tmp/machine.config.tar.gz.uu
# Finalmente, os arquivos temporários gerados
devem
# ser removidos
rm /tmp/machine.config.*
-
** Script retirado da lista Dicas-L
Mais informacões sobre crontab:
[root@localhost]# man crontab
[root@localhost]# man 5 crontab
|
-
Utilização do aplicativo cpio para
criação de backups
O comando cpio copia arquivos para ou de
um arquivo em formato cpio ou tar, o qual é um arquivo que contém
outros arquivos e informações sobre estes, tais como
seu nome, dono, data de atualização e
permissões de acesso.
No modo cópia de entrada, o
cpio lê uma lista de nome de arquivos, um em cada linha,
na entrada padrão ou de um próprio arquivo, e
grava-os em um arquivo maior na saída padrão. Uma
forma típica de gerar uma lista de arquivos é pelo
comando find devendo-se informar o
parâmetro -depth para minimizar os
problemas com permissões em diretórios que não
podem ser gravados ou pesquisados.
Sintaxe do modo de cópia de entrada:
cpio -o [parâmetros] < arquivo > saída
|
No modo cópia de saída, o
cpio lê da entrada padrão um arquivo criado com o
cpio (modo cópia de entrada) e retira dele aqueles cujo nome
combina com o padrão.
Sintaxe do modo de cópia de saída:
cpio -i [parâmetros] [padrão] < entrada
|
Para listar o conteúdo de um arquivo cpio:
[root@localhost]# cpio -itvf < nome_do_arquivo
|
Exemplos
No exemplo abaixo foi criado um arquivo de lista contendo o nome
de todos os arquivos presentes no diretório /home. Com o comando cpio, foi criado um arquivo de
formato tar contendo os arquivos listados
no arquivo lista:
[root@localhost]# find /home/* -depth > lista
|
[root@localhost]# cpio -oH tar < lista > backup_home
No exemplo abaixo, foi utilizado o cpio para copiar todos os
arquivos listados no arquivo lista,
criado no exemplo anterior, para os diretórios referentes a
cada arquivo:
[root@localhost]# cpio -if lista < backup_home
|
Utilizando o formato tar, é
também possível extrair da seguinte maneira:
[root@localhost]# tar -xvf backup_home
|
Mais informacões sobre o cpio:
[root@localhost]# man cpio
|
-
Utilizacão do aplicativo dump para criacão de
backups
O comando dump examina arquivos em um sistema de arquivos do
tipo ext2 e determina quais arquivos
necessitam fazer backups.
Utilizando o dump, é
possível fazer backup em disco, fita ou outro dispositivo
para armazenamento.
Um arquivo dump que ocupa um espaco
maior do que o disponível no dispositivo de entrada é
quebrado em múltiplos volumes.
Na maioria das mídias, o arquivo
dump terá o tamanho máximo relativo ao final da
mídia, quando este parâmetro é retornado. Em
mídias que não retornam o seu ponto de final de
mídia, os arquivos dump
irão possuir um tamanho previamente determinado pelo tamanho
da mídia.
Por padrão, todos os arquivos
dump de mesma origem de backup possuem o mesmo nome.
É possível também utilizar o dump para realizar backup redirecionando este arquivo
para uma máquina remota.
Opcões gerais:
- f : |
Realiza backup em arquivo, podendo ser dispositivo de fita,
disquete ou arquivo em si. |
- [0-9] : |
Dump levels - Nível 0 caracteriza um backup completo de
todo o sistema de arquivos em questão. Um nível
superior a 0 caracteriza backup incremental, relativo a
cópia de todos os arquivos novos ou modificados desde o
último dump de nível inferior. |
- u : |
Atualiza o arquivo /etc/dumpdates
após a finalização. Arquivo que contém
a data o sistema de arquivos e o nível de dump realizado no
sistema. |
Exemplos
No exemplo abaixo, foi feito um backup do diretório / com o comando dump,
gravando em um dispositivo de fita:
[root@localhost]# dump -0uf /backups/becape.bck /home
|
No exemplo abaixo, é apresentado a sintaxe pra backups em
máquina remota. Neste caso, certifique-se que o
serviço sshd está ativo nas
duas máquinas e se a máquina remota permite
conexão como root.Em seguida,emita o comando abaixo, fazendo
a modificações necessárias:
[root@localhost]# dump 0fb - 64 [filesystem] | ssh [máquina remota] '(cd [diretório destino];dd of=[arquivo destino] obs=64b)'
|
Exemplo:
[root@localhost /root]# dump 0fb - 64 /home | ssh máquina_remota '(cd /backups ; dd of=becape.bck obs=64b)'
|
No exemplo acima, foi feito um backup do diretório /home utilizando a máquina remota para
gravar no diretório /backups o
arquivo dump becape.bck.
Para verificar os arquivos presentes dentro de um arquivo
dump:
[root@localhost]# restore -tvf nome_do_arquivo_dump
|
Outra opcão, é gravar o backup já
compactado utilizando o gzip:
[root@localhost]# dump -0uf - /root | gzip > /backups/root.bck.gz
|
E para restaurar:
[root@localhost]# restore -rvf /backups/root.bck
|
ou, caso se use a compactação:
[root@localhost]# gzip -dc /backups/root.bck | restore -rvf -
|
Mais informacões sobre dump:
[root@localhost]# man dump
|
Obs.:
O programa restore, pertencente ao pacote dump e usado para
restaurar backups, possui um buffer overflow. Sendo um programa
SUID root, esta falha pode ser explorada por um usuário
local para obter privilégios de administrador (root).
Além disso ainda restava um problema onde a máquina
poderia deixar de responder por alguns segundos ao executar o
restore com certos parâmetros.
Pacotes: i386/dump-0.4b18-1cl.i386.rpm
e i386/rmt-0.4b18-1cl.i386.rpm
Todos os usuários deste programa devem fazer a
atualização deste pacote na página de
atualizações:
http://www.conectiva.com.br/atualizações