3. Backup/Restore – Automatizando (Cron)

Leave a comment

Nessa série de 3 artigos vamos explorar as opções mais simples de se efetuar Backup/Restore do Banco de Dados e dos arquivos do site do projeto hackends.com:

    1. Backup/Restore do Banco de Dados
    2. Backup/Restore dos arquivos
    3. Backup/Restore – Automatizando (Cron)

No artigo anterior, acompanhamos o processo de Backup/Restore dos arquivos do projeto hackends.com, nesse artigo vamos verificar o processo de automatização de Backup/Restore através da utilização da ferramenta Cron.

3. Backup/Restore – Automatizando (Cron)
A ferramenta Cron é um agendador de tarefas presente nas plataformas Unix e Linux, e serve para agendar a execução de comandos ou scripts para serem executados periodicamente em tempos ou intervalos definidos, e é gerenciada por uma tabela conhecida como crontab, um arquivo de configurações que especifica os comandos ou scripts em shell que serão executados.
Cada linha da crontab representa uma tarefa, composta por uma expressão Cron, seguida do comando que será executado, conforme o exemplo abaixo:

# * * * * * comando a ser executado
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── dia da semana (0-Domingo a 6-Sábado)
# │ │ │ └────────── mês (1 – 12)
# │ │ └─────────────── dia do mês (1 – 31)
# │ └──────────────────── hora (0 – 23)
# └───────────────────────── min (0 – 59)

– De acordo com a tabela acima, para executar o script teste.sh a cada 5 minutos, a linha da crontab seria:
*/5 * * * * /home/teste.sh

– A cada 5 horas:
* */5 * * * /home/teste.sh

– A cada hora, no início da hora:
0 * * * * /home/teste.sh

Podemos utilizar também expressões pré-definidas, como Diariamente, Semanalmente, Anualmente ou após o reboot do servidor:
@daily /home/teste.sh
@weekly /home/teste.sh
@yearly /home/teste.sh
@reboot /home/teste.sh

Para a automatização de backup do projeto hackends.com vamos utilizar a opção semanal, inserindo a regra na tabela crontab através do seguinte comando:
crontab -e

O editor de texto “vim” é chamado, com todas as tarefas definidas para o usuário que executou o comando (caso existam tarefas).
Basta incluir as seguintes linhas, salvar e sair do vim:
@weekly /usr/share/nginx/backup/backup_arquivos.sh
@weekly /usr/share/nginx/backup/backup_bd.sh

Até agora definimos que a execução dos scripts “backup_arquivos.sh” e “backup_bd.sh” será feita toda semana, vamos verificar o conteúdo dos scripts:

/usr/share/nginx/backup/backup_arquivos.sh
#!/bin/bash
#
## Arquivo: backup_arquivos.sh
## Esse script compacta os arquivos da instalação do WordPress
#
## Variaveis utilizadas nesse script:
# FILENAME - Armazena a data no formato completo AAAA/MM/DD
# DIR - Armazena o diretorio onde os arquivos
# de backup serao movidos
#
FILENAME=$(date +"%F")
DIR="/usr/share/nginx/backup"
#
## 1. Compactar os arquivos, utilizando
## a data atual como nome do arquivo
#
cd /usr/share/nginx/hackends
tar -czf $FILENAME.arquivos.tar.gz ./
#
## 2 - Verificar se existe o diretorio, mover
## o arquivo criado para o diretorio de backup
#
if [ -d $DIR ]
then
mv ./$FILENAME.arquivos.tar.gz $DIR
else
mkdir -p $DIR
mv ./$FILENAME.arquivos.tar.gz $DIR
fi

/usr/share/nginx/backup/backup_bd.sh
#!/bin/bash
#
## Arquivo: backup_bd.sh
## Esse script efetua o backup da base de dados wordpress_01
#
## Variaveis utilizadas nesse script:
# FILENAME - Armazena a data no formato completo AAAA/MM/DD
# DIR - Armazena o diretorio onde os arquivos
# de backup serao movidos
#
FILENAME=$(date +"%F")
DIR="/usr/share/nginx/backup"
#
## 1. Executar a ferramenta mysqldump, para extrair
## as informações da base de dados wordpress_01
#
cd /usr/share/nginx/hackends
mysqldump wordpress_01 > $FILENAME.sql
#
## 2 - Verificar se existe o diretorio, mover
## o arquivo criado para o diretorio de backup
#
if [ -d $DIR ]
then
mv ./$FILENAME.sql $DIR
else
mkdir -p $DIR
mv ./$FILENAME.sql $DIR
fi

Observação: Para que a extração das informações da base de dados wordpress_01 funcione corretamente conforme utilizado na linha “mysqldump wordpress_01 > $FILENAME.sql”, teremos que efetuar algumas alterações nas configurações do MariaDB, indicadas através desse artigo.
Outra maneira seria através da utilização do comando “mysqldump wordpress_01 > $FILENAME.sql -u root -p ******”, porém esta forma não é segura, pois ela guarda no script a senha para a conta root do MariaDB.

Precisamos tornar os scripts executáveis, através do comando chmod:
[[email protected] backup]# chmod +x backup_arquivos.sh
[[email protected] backup]# chmod +x backup_bd.sh

Fontes:
http://en.wikipedia.org/wiki/Cron
https://mariadb.com/kb/en/mysqldump/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *