Alex Junio
Voltar para o Blog
WordPress

Configurando Backups Automáticos

admin

admin

Engenheiro Cloud & DevOps

Publicado em

05/05/2022

Compartilhe

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.

No nosso servidor, vamos criar um diretório personalizado para que os backups sejam armazenados dentro dele.

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

bash
nano /var/www/backup.sh

Insira todo o conteúdo abaixo dentro do script e salve-o.

bash
#!/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

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

bash
date

Se tudo estiver correto, abra o crontab com o comando abaixo

bash
crontab -e

Agora adicione o conteúdo abaixo

bash
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

bash
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

bash
nano /var/www/backups.sh

Em seguida insira o conteúdo na última linha, feche e salve o arquivo

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

admin

Escrito por admin

Engenheiro Cloud & DevOps com mais de 10 anos de experiência construindo e escalando infraestruturas de alto tráfego em AWS, DigitalOcean e Servidores Dedicados.

Conhecer Serviços →

Comentários (4)

Deixe seu comentário

U
Thiago Moreira
Thiago Moreira
Há 2 dias

Excelente artigo, Alex! Estávamos exatamente com esse problema de overprovisioning na nossa startup. Aplicar os Savings Plans salvou quase 30% da nossa conta mensal.

Alex Junio
Alex JunioAutor
Há 1 dia

Fico feliz que ajudou, Thiago! Essa economia faz total diferença no longo prazo. Se precisarem de ajuda para escalar o banco de dados depois, me deem um toque.

Juliana Costa
Juliana Costa
Há 4 dias

Não tinha pensado em usar Spot para as filas do SQS. Existe algum risco do Spot ser finalizado no meio de um processamento pesado de vídeo?

Alex Junio
Alex JunioAutor
Há 4 dias

Sim, Juliana! A AWS te avisa com 2 minutos de antecedência. O segredo é sua aplicação capturar o evento de interrupção e colocar a mensagem de volta na fila (visibility timeout) antes da máquina morrer.

Roberto Freitas
Roberto Freitas
Há 1 semana

Muito bom o conteúdo técnico. Falta só mais detalhes sobre instâncias Graviton.

Carla Mendes
Carla Mendes
Há 1 semana

Sensacional! Usei as dicas de Right-Sizing e deu muito certo no meu e-commerce.