De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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