você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Realizando backups em HD com Amanda

Colaboração: Daniel Duclos

Data de Publicação: 13 de Dezembro de 2004

Versão On Line

Todo administrador de sistemas sabe que o backup é uma parte vital da segurança e garantir sua realização e integridade é crítico no seu cotidiano.

Existem muitas alternativas de backups destinadas a todos os tamanhos de rede e bolso, e o Amanda é sempre citado como uma alternativa livre e gratuita.

Porém o Amanda é comumente utilizado para realizar backups em fita, o que nem é sempre econômico, já que hoje em dia HDs são muito baratos e certamente mais práticos para uma pequena empresa utilizar.

É perfeitamente possível ter um amanda realizando backups no disco rígido, e como realizar isso é a que nos propomos neste artigo.

Do que você irá precisar

Escolha uma máquina para ser o servidor de arquivos. Este tutorial considera que se utilizará como sistema operacional desse servidor o Debian GNU/Linux atualizado, porém pode perfeitamente servir de base para que a mesma tarefa seja realizada em outras distribuições.

É muito interessante que esta máquina tenha bastante espaço em disco e se possível um HD dedicado somente ao backup.

Essa máquina deve estar conectada à rede das outras máquinas que terão seus dados salvos.

Estratégia de backups e definições

Iremos criar no HD 14 fitas "virtuais", que serão diretórios no HD. O Amanda considera que será rodado uma vez por dia.

O amanda pode realizar backups completos (full) e incrementais. Você pode decidir a freqüência e a retenção (por quanto tempo ficarão armazenados) desses backups.

Nesse artigo escolhemos realizar um backup completo uma vez por semana e incrementais seis vezes por semana, criando um ciclo semanal.

A retenção é feita por duas semanas, com uma fita virtual por backup.

Esse parâmetros podem ser alterados no /etc/amanda/DailySet1/amanda.conf, na seção:

 dumpcycle 7 days
 tapecycle 14

Se quiser realizar dois backups completos em uma semana, por exemplo, altere para:

 dumpcycle 3 days
 tapecycle 14

As fitas virtuais ficarão em /backups e o usuário com que o amanda irá rodar é o padrão do Debian, "backup". Este usuário já existe na Debian, porém pode variar em outras distribuições.

Resta agora decidir o tamanho que cada fita virtual terá. Nesse exemplo escolhemos 10 GB por fita, o que dá um espaço alocado de 140 GB para backups.

Instalação e Configuração: Servidor

No servidor instale o amanda. É muito importante que seu Debian esteja com a versão atualizada do sistema, pois a versão do amanda que está na Stable não suporta backup para disco rígido. A versão 2.4.4p3-2 foi utilizada neste tutorial:

 apt-get install amanda-server

Após feita a instalação, vamos configurá-lo:

 cd /etc/amanda/DailySet1/

Salve uma cópia do arquivo original, se quiser:

 cp /etc/amanda/DailySet1/amanda.conf{,-ori}

Agora edite o arquivo /etc/amanda/DailySet1/amanda.conf, apague seu conteúdo e coloque o seguinte, lembrando que o que vem depois do sinal # é considerado comentário e será ignorado pelo Amanda::

 org "DailySet1"                # Nome descritivo para as mensagens
 mailto "sysadmin@dominio.com"  # Email de quem irá receber os logs
 dumpuser "backup"              # Usuário dono dos backups
 inparallel 1                   # Procesos em paralelo
 netusage  10                   # Uso máximo de banda em Kbps

 dumpcycle 7 days               # Número de dias de um ciclo completo
 tapecycle 14              # Número de "fitas"

 runtapes     1                 # Quantas fitas usar por ciclo
 tpchanger "chg-multi"          # Script controlador de fitas
 changerfile "/etc/amanda/DailySet1/changer.conf" # Configuração das fitas

 tapetype HARD-DISK              # Tipo de armazenamento
 labelstr "^HISS[0-9][0-9]*$"    # Expressão regular das etiquetas das fitas

 infofile "/var/lib/amanda/DailySet1/curinfo"    # Diretório de datos
 logfile  "/var/log/amanda/DailySet1/log"        # Diretório de log

 indexdir "/var/lib/amanda/DailySet1/index"   # Diretório de índice

 amrecover_changer "chg-multi"  # Seleciona as fitas automaitcamente no restore

 # definição de arquivamento com dump
 define dumptype hard-disk-dump {
   comment "Backup no HD - usando dump"
   holdingdisk no
   index yes
   options compress-fast, index, exclude-list "/etc/amanda/exclude.gtar"
   priority high
 }

 # Definição do armazenamento com tar
 define tapetype HARD-DISK {
   comment "HD"
   length 10000 mbytes  # 10 GB de espaço
 }

 # Definição de armazenamento com 'tar'
 define dumptype hard-disk-tar {
   program "GNUTAR"
   hard-disk-dump
   comment "Backup para disco - usando tar"
 }

Edite o arquivo '/etc/amanda/DailySet1/changer.conf' para definir as características das "fitas" e coloque o seguinte:

 multieject 0
 gravity 0
 needeject 0
 ejectdelay 0

 statefile /var/lib/amanda/DailySet1/changer-status

 firstslot 1
 lastslot 14

 slot 1 file:/backups/tape01
 slot 2 file:/backups/tape02
 slot 3 file:/backups/tape03
 slot 4 file:/backups/tape04
 slot 5 file:/backups/tape05
 slot 6 file:/backups/tape06
 slot 7 file:/backups/tape07
 slot 8 file:/backups/tape08
 slot 9 file:/backups/tape09
 slot 10 file:/backups/tape10
 slot 11 file:/backups/tape11
 slot 12 file:/backups/tape12
 slot 13 file:/backups/tape13
 slot 14 file:/backups/tape14

Agora a vez é do '/etc/amanda/DailySet1/disklist', que irá definir quais máquinas terão quais diretórios armazenados:

 # O nome da máquina deve ser o que está no DNS (ou no /etc/hosts)
 cliente.dominio.com /home hard-disk-tar
 cliente.dominio.com /var hard-disk-tar
 cliente.dominio.com /etc hard-disk-tar

 cliente2.dominio.com /home         hard-disk-tar
 cliente2.dominio.com /usr/local hard-disk-tar

Os nomes das máquinas clientes devem estar definidas no seu /etc/hosts ou no seu DNS.

A seguir iremos criar os diretórios das fitas virtuais:

 mkdir /backups

Então, os sub-diretórios:

 mkdir -p /backups/tape01/data
 mkdir -p /backups/tape02/data
 [...]
 mkdir -p /backups/tape14/data

Acerte a permissão de modo que o usuário de backup possa escrever nesses diretórios::

 chown -R backup:backup /backups

Vamos editar o agendador de tarefas (cron) para realizar os backups às 5:00 da manhã. Edite o '/etc/crontab' e acrescente a seguinte linha:

 00 5    * * *   backup      /usr/sbin/amdump DailySet1

Edite o '/etc/amandahosts' para permitir o acesso do usuário que irá realizar a restauração de arquivos, no caso o root. Acrescente essas linhas:

 #servidor usuário
 servidor  root

É necessário iniciar os serviços de rede do Amanda, para que o backup e os restores possam ser feitos. Isso é definido através do super-servidor inet ou seu substituto, o xinet. Iremos mostrar como configurar os dois. Primeiro o inetd. Descomente ou insira as seguintes linhas no seu '/etc/inetd.conf' :

 amanda dgram udp wait backup /usr/sbin/tcpd /usr/lib/amanda/amandad
 amandaidx stream tcp nowait backup /usr/sbin/tcpd /usr/lib/amanda/amindexd
 amidxtape stream tcp nowait backup /usr/sbin/tcpd /usr/lib/amanda/amidxtaped

Reincie o inetd::

 /etc/init.d/inetd restart

Caso possua xinetd, inclua no arquivo '/etc/xinetd.conf'::

 service amanda
  {
       socket_type     = dgram
       protocol        = udp
       wait            = yes
       user            = backup
       server          = /usr/lib/amanda/amandad
  }

 service amandaidx
  {
       socket_type     = stream
       protocol        = tcp
       wait            = no
       user            = backup
       server          = /usr/lib/amanda/amindexd
  }

 service amidxtape
  {
       socket_type     = stream
       protocol        = tcp
       wait            = no
       user            = backup
       server          = /usr/lib/amanda/amidxtaped
  }

Os próximos comandos serão dados como o usuário backup:

 su - backup

Crie o arquivo de lista de tapes, que será posteriormente preenchido pelo Amanda:

 touch /etc/amanda/DailySet1/tapelist

Agora vamos etiquetar as fitas virtuais, para uso do Amanda:

 /usr/sbin/amlabel DailySet1 HISS01 slot 1
 /usr/sbin/amlabel DailySet1 HISS02 slot 2
 /usr/sbin/amlabel DailySet1 HISS03 slot 3
 [...]
 /usr/sbin/amlabel DailySet1 HISS14 slot 14

Instalação e Configuração: Clientes

A configuração no servidor está completa. Agora iremos para um cliente Linux, que pode ser o desktop de alguém ou seu Servidor Web, por exemplo. Caso esse cliente também esteja rodando Debian:

 apt-get install amanda-client

Ou instale o cliente do amanda da sua distribuição.

Agora, edite o '/etc/amandahosts':

 # nome da maquina usuario
 servidor.dominio.com        backup

Note que o nome do servidor deve estar definido no /etc/hosts do cliente ou no seu DNS interno. O mais fácil é definir no '/etc/hosts', nesse formato:

 192.168.1.110     servidor.dominio.com      servidor

Estamos quase lá. É preciso que o seu cliente esteja escutando na rede para que, quando o servidor se conectar, ele consiga transferir os dados. Como explicado anteriormente, isso pode ser feito via inet ou xinet. Vamos ver os dois casos.

No Debian, quando se instala o amanda-server ele insere a seguinte linha no seu '/etc/inetd.conf' :

 amanda dgram udp wait backup /usr/sbin/tcpd /usr/lib/amanda/amandad

Se não estiver lá, insira manualmente a linha. Em qualquer dos casos reinicie o inetd.conf::

 /etc/init.d/inetd.conf restart

Caso você utilize o xinetd porém, basta editar o '/etc/xinetd.conf' e colocar assim:

 service amanda
  {
       socket_type     = dgram
       protocol        = udp
       wait            = yes
       user            = backup
       server          = /usr/lib/amanda/amandad
  }

Reinicie o xinetd:

 /etc/init.d/xinetd restart

E a configuração está pronta!

Restaure os backups!

O seu backup foi realizado com sucesso às 5:00 da manhã e tudo está certo. É hora de aprender a restaurar os backups enquanto tudo está tranquilo e ninguém esta desesperado gritando com você pelos seus dados preciosos.

Existe algumas maneiras de fazer isso. Uma é utilizando o 'amrecover', como root. Essa opção é a que iremos utilizar, por ser a mais poderosa.

Na máquina servidora, como root, crie um diretório de restore:

 mkdir /restore
 cd /restore

Agora, chame o programa de recuperação:

 amrecover

Dê o comando que determina a data que você quer restaurar, no formato AAAA-MM-DD, onde AAAA é o ano com quatro dígitos, MM é o mês com dois dígitos e DD é o dia com dois dígitos:

 amrecover> setdate 2004-11-06
 200 Working date set to 2004-11-06.

Aqui você determina de qual cliente você quer restaurar o backup:

 amrecover> sethost cliente
 200 Dump host set to cliente.

A seguir você determina de qual "disco" você irá restaurar o backup. Se você especificou para ser feito o backup do diretório '/home' do cliente ponha '/home'. Mesmo que você vá restaurar somente um diretório ou somente um arquivo. Veja abaixo como extrair somente um arquivo do diretório '/home/daniduc' :

 amrecover> setdisk /home
 200 Disk set to /home.

Aqui você navega até o diretório::

 amrecover> cd daniduc
 /home/daniduc

O próximo passo é adicionar o arquivo a ser restaurado. Lembre-se que você pode usar coringas, como o * para adicionar todos os arquivos, ou pode adicionar um diretório:

 amrecover> add .bash_history
 Added /daniduc/.bash_history

Continue adicionando diretórios e arquivos, conforme o necessário.

Aqui você pede para o Amanda selecionar a fita virtual automaticamente:

 amrecover> settape chg-multi
 Using tape "chg-multi" from server localhost.

E finalmente, só resta extrair os arquivos:

 amrecover> extract
 Extracting files using tape drive chg-multi on host localhost.
 The following tapes are needed: HISS06

 Restoring files into directory /restore
 Continue [?/Y/n]? y

 Extracting files using tape drive chg-multi on host localhost.
 Load tape HISS06 now
 Continue [?/Y/n/s/t]? y
 ./daniduc/.bash_history
 amrecover> exit

Pronto, foi feita a restauração do arquivo dentro do diretório /restore! Sua empresa já pode dormir tranqüila, sabendo que possui backups eficientes a um custo extremamente acessível.



Veja a relação completa dos artigos de Daniel Duclos