A prática do backup é de extrema importância há casos em que há a necessidade de se utilizar cópias de arquivos, tabelas de banco de dados e outros mais . Para fazer essa rotina de backup utilizaremos o utilitário nativo dos sistemas *unix para fazer o agendamento dos dias, horas em que o servidor automaticamente irá executar a rotina.
O script consistirá em copiar o diretório onde estão as aplicações (/home/usuário/aplicativos), os arquivos de configuração e diretórios compartilhados (/usr/share/Zend).
Abaixo segue um modelo de script simples para fazer o backup sendo importante entender, que ao implementar o servidor as bases de dados podem ou não estar no mesmo computador, portanto iremos mostrar os seguintes contextos de backup:
1. Base de dados Mysql
2. Aplicações php
3. Arquivos de Configuração
4. Diretório compartilhado /usr/share/Zend
Crie um arquivo com o nome backup no diretório /etc e de a permissão de execução abaixo segue o a implementação das rotinas de backup.
#!/bin/sh
echo '***' >> /var/log/backup.log
echo " Inicianado backup referente à `date`" >> /var/log/backup.log
#Variaveis
dia=`date +%d`
mes=`date +%b`
ano=`date +%y`
todosbancos=`mysql -u root -senha -s -e "show databases" | grep -v Database`
servidor=`hostname`;
arq_conf='/etc'
biblioteca='/usr/share/Zend'
phpids='/usr/share/phpids'
aplicacaoes='/home/usuario/aplicativos'
dirbackup='/home/usuario/backup' (Defina o seu diretório)
backupgeral='/home/usuario/backup_anterior' (Defina o seu diretório)
cd $dirbackup
#Limpa para fazer backup
rm *.sql
rm *.tar.gz
#Faz a cópia dos bancos e compacta
for db in $todosbancos
do
mysqldump -u root -senha --skip-extended-insert $db > $servidor-$db-$dia-$mes-$ano.sql
done
tar -czvf $servidor-$dia-$mes-$ano.tar.gz *.sql $arq_conf $biblioteca $phpids
#copia para pasta arquivo anterior
cp -f *.tar.gz $backupgeral
# Enviar para outro servidor via FTP
curl -T $servidor-$dia-$mes-$ano.tar.gz ftp://usuario:senha@servidor/diretorio/$servidor/
echo " Terminando backup referente à `date`" >> /var/log/backup.log
Para fazer o agendamento de execução da rotinas execute o comando no terminal:
# crontab -e
Forma de configurar:
# m h dom mon dow command
0 0 *** /etc/backup
Significado das abreviações do crontab:
- m - Minutos de 0-59
- h - Horas de 00 às 23
- dom - Dia do mês 0-31
- mon - Mês de 0-12
- dow - Dia da semana 0-7
- Comand - Local onde se sencontra o script (/etc/init.d/backup)