A importância dos Backups
Ao longo do tempo vivenciei diversos projetos e vi na prática a importância que um backup tem para solucionar um problema. Já vi de perto vários projetos terem de recomeçar do zero pelo falta de backups.
Problemas técnicos acontecem, hora ou outra uma invasão ou infestação de malwares podem ocorrer, principalmente em projetos WordPress que são muito visados por atacantes e nessas horas se você não tem um backup limpo, irá chorar.
Nesse capítulo vamos configurar rotinas de backups no nosso servidor WordPress para termos cópias de segurança do nosso site.
Configurando Backup WordPress
A nossa configuração de backups será executada 1x por dia durante 7 dias, e após os 7 dias o último backup mais antigo será removido, desse modo você sempre terá salvo no seu servidor wordpress os últimos 7 dias de backups.
Se seu WordPress é muito pesado e o armazenamento do servidor ficar lotado, diminua a retenção dos backups de modo que o seu servidor consiga armazenar os backups sem travamentos.
Exemplo: Seu servidor possui 100GB de armazenamento e você possui um WordPress com 12GB de arquivos. Se você configurar o backup com retenção de 7 dias, será consumido 7 dias * 12GB de backups + 12GB do site principal, que dará um total de 96GB consumidos. Então analise bem!
No nosso servidor, vamos criar um diretório personalizado para que os backups sejam armazenados dentro dele.
mkdir -p /var/www/backups
Agora vamos criar um script shell básico para que o backup seja executado de modo que os arquivos do nosso WordPress e o banco de dados sejam salvos.
nano /var/www/backup.sh
Insira todo o conteúdo abaixo dentro do script e salve-o.
#!/bin/bash
DIA=$(date +%Y%m%d%H%M%S)
DB_BACKUP=${DIA}_database.sql
ARQUI_BACKUP=${DIA}_wp.tar.gz
DB_NAME=$(sed -n "s/define( *'DB_NAME', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
DB_USER=$(sed -n "s/define( *'DB_USER', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
DB_PASSWORD=$(sed -n "s/define( *'DB_PASSWORD', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
DB_HOST=$(sed -n "s/define( *'DB_HOST', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
# Backup do banco de dados
mysqldump --add-drop-table -u$DB_USERNAME -p$DB_PASSWORD -h$DB_HOST $DB_NAME > /var/www/backups/$DB_BACKUP 2>&1
# Comprimindo backup da DB
gzip /var/www/backups/$DB_BACKUP
# Backup do diretorio do WordPress
tar -zcf /var/www/backups/$ARQUI_BACKUP /var/www/html
Para que você não fique “boiando” sobre como esse script trabalha, ele tem as seguintes particularidades:
- É executado como um script bash
- Configura uma variável DIA com a data atual para os backups
- Recupera automaticamente as credenciais do banco de dados, para que automação consiga se conectar no banco
- Utiliza o gzip para comprimir o backup da database e com isso ocupar menos espaço
Agora dê permissão de execução
chmod u+x /var/www/backup.sh
Agora vamos colocar esse script no crontab para que ele seja executado todos os dias de madrugada, para que ele seja executado exatamente no horário que queremos temos que ajustar o horário do nosso servidor.
No entanto, configuramos o horário do servidor no primeiro capítulo desde guia. Mas verifique se a hora está correta:
date
Se tudo estiver correto, abra o crontab com o comando abaixo
crontab -e
Agora adicione o conteúdo abaixo
0 5 * * * cd /var/www/; /var/www/backup.sh >/dev/null 2>&1
Esse cronjob irá acessar o diretório onde o script está armazenado e será executado as 05h da manhã todos os dias da semana.
Sempre que desejar verificar os backups salvos, basta executar o comando abaixo
ls -l /var/www/backups
Configurando Limpeza Automática
Até aqui já configuramos nosso script e colocamos ele na crontab para que seja executado todos os dias. Mas ainda não configuramos uma maneira de limpar os backups antigos, caso contrário em pouco tempo nosso servidor irá travar por falta de espaço.
Para isso vamos adicionar uma linha no nosso script bash, logo no final do arquivo
nano /var/www/backups.sh
Em seguida insira o conteúdo na última linha, feche e salve o arquivo
rm -f /var/www/backups/$(date +%Y%m%d* --date='1 week ago')
Agora nosso script sempre deixará salvo os últimos 7 dias de backups salvos no nosso servidor WordPress.
Conclusão
Backup de hospedagem WordPress é fundamental para a segurança e retenção dos dados, em um desastre você terá uma cópia dos arquivos e poderá utilizar sempre que precisar.