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:
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.