Backup Simples
Autor: Marcos Ferreira da Silva | Publicado: 2010-11-21T11:10:00-02:00

Como já fizemos vários servidores não podemos esquecer um ponto crucial que é o backup.

Iremos realizar um backup simples, no próprio servidor. Iremos fazer backup somente dos arquivos essenciais.

Crie o diretório /root/bin caso não exista e edite um arquivo backup.sh.

[root@fw root]# vim /root/bin/backup.sh

Coloque o código abaixo no script de backup.

#!/bin/bash
BACKUPDIR=/root/bin
OUTPUTDIR=/backup
DATA=$(date +%Y-%m-%d)
SERVERNAME=$(hostname -s)

FILENAME=$OUTPUTDIR/$SERVERNAME-sistema-$DATA
date > $FILENAME.tempo
/bin/tar -cpj -T $BACKUPDIR/backup.lista  -X $BACKUPDIR/backup.exclude -f $FILENAME.tar.bz2 2> $FILENAME.erro
date >> $FILENAME.tempo
/usr/bin/md5sum $FILENAME.tar.bz2 > $FILENAME.md5

/bin/chmod 440 $FILENAME.*

Crie o arquivo backup.lista onde estará os arquivos e diretórios que serão realizados os backups e o arquivo backup.exclude caso queira excluir algum arquivo ou diretório.

[root@fw root]# touch /root/bin/backup.lista
[root@fw root]# touch /root/bin/backup.exclude

Edite o arquivo backup.lista e vamos colocar os arquivos e diretórios que desejamos fazer o backup.

No caso do firewall iremos fazer o backup dos arquivos abaixo.

/etc/ssh/sshd_config
/etc/sysctl.conf
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-eth2
/etc/rc.d/rc.local
/root/bin
/var/spool/cron/root

Caso esteja executando o servidor de cache de nomes deve fazer backup do arquivo /etc/named.caching-nameserver.conf, e se estiver rodando o dhcp fazer também do /etc/dhcpd.conf.

Altere a permissão do arquivo backup.sh para executável, e crie o diretório de backup, não deixando que outros possam entrar no diretório.

[root@fw root]# chmod 700 /root/bin/backup.sh
[root@fw root]# mkdir /backup
[root@fw root]# chmod 750 /backup

Após criado o script de backup, definido quais arquivos e diretórios fazer backup devemos agendar o backup. Para isto usamos o comando crontab.

[root@fw root]# crontab -e 

E colocamos o conteúdo, por exemplo, agendado para todos os dias as 00:00hs.

0 0 * * * /root/bin/backup.sh

Para testar vamos executar o script e verificar se ele cria o arquivo de backup dentro do diretório correto. Para isto execute o script.

[root@fw root]# backup.sh

Veja no diretório /backup se foram criados os arquivos.

[root@fw root]# ls -l /backup
total 28
-r--r----- 1 root root  0 Nov 21 10:53 fw-sistema-2010-11-21.erro
-r--r----- 1 root root 73 Nov 21 10:53 fw-sistema-2010-11-21.md5
-r--r----- 1 root root 46 Nov 21 10:53 fw-sistema-2010-11-21.tar.bz2
-r--r----- 1 root root 60 Nov 21 10:53 fw-sistema-2010-11-21.tempo

Foram criados quatro arquivos. O arquivo com os dados está com extensão .tar.bz2, onde o comando tar juntou todos os arquivos e compactou usando bzip2. O arquivo com extensão .md5 contém uma chave para verificação se o arquivo não possa está corrompido, caso deseje verificar calcule o md5 do arquivo .tar.bz2 e compare com o que está dentro do .md5. As extensões .tempo e .erro são para indicar o tempo gasto no backup e caso aconteça algum erro durante o backup você poderá visualizar.

Para os demais servidores o procedimento é o mesmo, só atentar para o detalhe de quais arquivos deve fazer backup sempre verificando quais serviços estão sendo executados e seus arquivos essenciais.

Qualquer dúvida poste seu comentário.