Unidade F - Servidor NFS

F.3. Backup com NFS

Um dos usos mais comuns do NFS é na realização de cópia de segurança de dados entre servidores. Como vimos no capitulo anterior, este serviço provê um mecanismo que permite o compartilhamento transparente de diretórios, o que facilita a tarefa de backup.

Vamos a um exemplo prático: suponha que você tenha na sua empresa dois servidores. um servidor é responsável pelo sistema administrativo da empresa e atende pelo endereço IP 192.168.1.10 e, o segundo, é o servidor onde periodicamente deve ser enviada uma cópia dos dados deste sistema e responde pelo IP 192.168.1.20 (onde o servidor NFS deverá ser instalado). Para a cópia dos arquivos do sistema administrativo no segundo servidor podemos criar um diretório próprio para este fim:

#mkdir /backup

E compartilhá-lo via NFS.
Para isso, devemos declará-lo no arquivo exports (estamos assumindo aqui que o servidor de backup já tenha o servidor NFS instalado):

/backup    192.168.1.10/24(rw,no_root_squash,sync, no_subtree_check)

Como você pode observar, estamos compartilhando o diretório exclusivamente para o servidor de aplicação. Após salvar o arquivo de configuração vamos efetivar o compartilhamento:

#exportfs –a

Vamos voltar a nossa atenção agora para o servidor de aplicação. Para que possamos realizar o mapeamento do compartilhamento neste servidor, devemos definir um ponto de montagem:

#mkdir /mnt/backup

Após a criação deste diretório, vamos utilizá-lo para mapear o compartilhamento:

#mount -t   nfs   192.168.1.20:/backup   /mnt/backup

Vamos supor que no servidor os dados do sistema administrativo sejam armazenados no diretório /sistema/dados para realizar a cópia de segurança, nesse caso, o procedimento seria:

#mkdir /mnt/backup/dia_de_hoje
# cp -R /sistema/dados  /mnt/backup/dia_de_hoje

No exemplo acima, criamos no servidor remoto uma pasta chamada “dia_de_hoje” que tem a função de indicar a data em que a cópia ocorreu. É claro que você pode substituir essa expressão por uma data válida. Na sequência, procedemos à cópia dos dados para o diretório indicado. Ao final da cópia, você poderá desmontar a unidade remota e verificar no servidor de backup se os dados foram corretamente enviados para o mesmo.

#umount  /mnt/backup

Como a cópia de segurança é uma tarefa importante e rotineira, é interessante automatizá-la. Você pode fazer facilmente isso ao organizar os comandos anteriores em um script e agendar a execução do mesmo. Para tanto, primeiramente, vamos definir o local onde este arquivo será criado:

#mkdir /scripts
#cd /scripts

Neste diretório vamos criar um arquivo chamado backup.sh:

#gedit backup.sh

E nele vamos inserir o seguinte conteúdo:

  1. #/bin/bash
  2. DATA=`date +%Y-%m-%d-%H.%M`
  3. mount -t   nfs   192.168.1.20:/backup   /mnt/backup
  4. mkdir /mnt/backup/$DATA
  5. cp -R /sistema/dados  /mnt/backup/$DATA
  6. umount  /mnt/backup

Nesse script criamos uma variável chamada $DATA (linha 2), que recebe a data do sistema que posteriormente utilizaremos para criar uma pasta que identifica o período em que a cópia foi realizada(linha 4). Na linha 5, realizamos a cópia do conteúdo da pasta local do servidor de aplicação para a pasta remota mapeada no ponto de montagem /mnt/backup. Após este processo desmontamos a unidade remota (linha 6).

Para devemos tornar nosso script executável. Para realizarmos esta tarefa utilizamos o comando:

#chmod 755 backup.sh

Você pode testar a execução do script digitando:

#./ backup.sh

Se as instruções do arquivo forem executadas com sucesso, o seu servidor de backup deverá possuir uma cópia dos arquivos de sua pasta local (/sistema/dados) em uma pasta identificada pela data de execução do script sob o diretório/backup.

Vamos agora agendar a execução do script de backup, mesmo no crontab. Para abrir o editor de tarefas com o comando:

#contab –e

E neste vamos inserir a seguinte linha

30 6 *** root /scripts/backup.sh

Com essa instrução, estamos dizendo que queremos que o nosso script seja executado todos os dias às 6h30 da manhã.

Com esses passos, construímos um procedimento de backup simples e funcional. É claro que o script acima poderia ser sofisticado com a adição de mais comandos e estruturas de controle. Fica o desafio.