Página seguinte Página anterior Índice

55. sistema/backup

55.1 Quais são as ferramentas para backup disponíveis ?

1) 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

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 do armazenamento 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.

2) 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

3) 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:

 saveconfig
#!/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

4) 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

5) 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
- 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:

<htmlurl url="http://www.conectiva.com.br/atualizacoes" name="http://www.conectiva.com.br/atualizacoes">

55.2 Qual a importância do backup?

                                  BACKUP

O backup existe como forma de previnir que os arquivos sejam apagados
acidentalmente, seja por falha física, ou por falha humana. O backup
garante a integriadade dos dados, de configurações, bancos de dados,
arquivos de usuários.
Mas para um backup ser funcional deve-se ter em mente duas coisas:

1 - Um sistema de backup
2 - Uma mídia confiável 

Na primeira parte, vamos considerar primeiro o volume de backup a ser
empreendido. Caso o sistema  seja pequeno, pode-se considerar um método
pequeno, de backups 'full', ou seja, que tudo seja copiado todo o dia, e
que garante um pequeno número de mídia. O incoveniente é a demora do
backup. Mas numa grande empresa, precisamos colocar este sistema de uma
maneira funcional, onde não pode-se perder grande tempo com o backup, e 
além do mais, muitas empresas não investem em quantidades de mídia.
Por isso uma estratégia de backup é importante. Nesses casos criamos 
um sistema de backup 'full' e um incremental, que copiará somente os dados
alterados durante o dia, ou semana. Veja o esquema abiaxo:

        - Backup 'FULL' do mês
        - Backup 'FULL' da semana
        - Backup incremental da Segunda
        - Backup incremental da Terça
        - Backup incremental da Quarta
        - Backup incremental da Quinta 
        - Backup incremental da Sexta

Nesta tabela, utilizamos 7 mídias para efetuar o bakcup do sistema,
e no caso de algum problema, restauramos a última cópia full e os
backups incrementais que satisfaçam a nossa necessidade. A vantagem deste
sistema é a economia de mídias. Pois se fizessemos backups completos todos
os dias poderiamos utilizar mais de uma mídia por dia.


Na segunda parte temos a questão de mída em si. Esta geralmente utilizada
em fita, pois a mesma se apresenta de forma barata para armazenamento de
grande quantidades. Podendo ainda, conforme a quantidade de dados, ser 
utilizados disquetes, discos óticos. Teste sempre o seu backup, pois o 
precisamos confiar no sistema, e não deixar para descobrir que ele é 
inificiente quando perdemos todos os dados.

55.3 Como posso fazer um backup usando o taper?

                    BACKUP USANDO TAPER

Recomendado para backup de sistema de arquivos pequenos e sem
muita variação. O taper se apresenta de forma simples e amigável
para o usuário final.

Instale o pacote:

[root@localhost]# rpm -ivh taper-* 

Para utilizar o taper, chama-se como superusário no prompt de comandos:

[root@localhost]# taper -T <dispositivo> <opções> 

Para a escolha do dispositivo usa-se:

    
          taper -T SCSI    (taper -T s) 
          taper -T ftape   (taper -T f)
          taper -T zftape  (taper -T z) 
          taper -T removable  (taper -T r) 
          taper -T file (taper -T l) 
          taper -T ide  (taper -T i)


E as opções uso do taper são:


-f file (--rewinding-device)      usar arquivos com a opção de rebobinar
-n file (--non-rewinding-device)  usar arquivos com a opção de não-rebobinar 
-b file (--both-devices)          usa arquivos com as dua opções
- c num (--compress-type)         Tipo de compressão (0 nenhum, 1 e gzip, 2
                                  int comp, 3 int gzip, 4 fast comp)
-F file (--exclude-files)         arquivos que não serão incluídos no backup
-g name (--volume-title)          titulo do volume
-l file (--log-file)              nome do arquivo de log
-m num  (--log-level)             nivel do log (0=none..4=all)
-t name (--archive-title)         titulo do backup
-?      (--help)                  ajuda

Após chamar o taper, este apresenta um menu básico, onas opções principais, pode-se
utilizar para fazer o backup, restaurar, testar integridade, editar preferências.


Após se definir qual método para backup, usamos a opção de backup, ao iniciar, o
taper pede um nome para o backup, e um para o volume, em seguida mostra uma arvore
de diretórios, no qual fazemos a escolha dos arquivos pressionando a tecla I, e ao
finalizar a escolha, usamos atecla f para inciar a cópia de backup.

Para restaurar o backup, utiliza-se o o menu Restore, e escolhe-se qual o conjunto de 
backup deseja-se restaurar, e o diretório onde quer que seja restaurado, a seguir,
selecioa-se os arquivos para restauracão com a tecla I, e usa-se a tecla F inicar
o restore.


Dentro do taper, pode-se pressionar a barra de espaço, para verificar quais os comandos
válidos.

-  i ou I  - Seleciona arquivos
-  f ou F  - Inicia o processo
-  u ou U  - retira arquivo da lista
-  q       - Aborta


Página seguinte Página anterior Índice