Configurando Backup Postgres com Gdrive

Nesse post irei apresentar uma forma de automatizar o backup de um banco de dados Postgres e enviá-lo para o Google Drive. Para isto utilizaremos o utilitário gdrive do prasmussen que nos facilita na iteração com o Google Drive.

Instalando o GDrive

Crie uma pasta bin dentro do diretório da sua conta:

mkdir ~/bin
cd ~/bin

Baixe a última versão do gdrive no repositório através do comando:

wget https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_amd64.tar.gz

Extraia o arquivo:

tar -zxvf gdrive_2.1.1_linux_amd64.tar.gz

Para configurar o acesso a sua conta Google Drive, digite o seguinte comando:

gdrive about

Uma mensagem de autenticação obrigatória irá ser apresentada, Copie a URL e cole no seu navegador, e clique em permitir.

Backup do banco de dados para o Google Drive

Após a instalação e configuração do utilitário do gdrive, vamos precisar criar uma pasta no Google Drive, onde iremos armazenar os arquivos de backup do banco de dados, para isso utilize o comando abaixo, ou altere para um diretório da sua escolha:

~/bin/gdrive mkdir backups

Obtenha o ID da nova pasta criada para utilizarmos no script de backup:

~/bin/gdrive list

Feito isto vamos criar um script para backup do banco de dados postgres e criar um agendamento no crontab. Crie um arquivo chamado backup-gdrive.sh com o seguinte conteúdo abaixo, mas não se esqueça de alterar os valores que estão entre colchetes ex: [NOME_BANCO_DE_DADOS] para “database”:

#!/bin/bash

now=`date +%Y%m%d-%H%M%S`
day_ago=14
db_name="[NOME_BANCO_DE_DADOS]"
folder_gdrive_id=[ID_PASTA_GDRIVE]

base_path="/home/[NOME_DO_USUARIO]/backups"
dump_fpath="$base_path/backup_db-$now.sql.gz"

echo "Iniciando backup do banco de dados..."
sudo -u postgres pg_dump $db_name | gzip -9 > $dump_fpath
echo "Backup banco de dados finalizado."

echo "Removendo backups de 7 dias atrás..."
find $base_path -maxdepth 1 -type f -name "backup_db*.gz" -mtime +$day_ago -delete
echo "Remoção finalizada."

echo "Sincronizando backup com Google Drive..."
/home/[NOME_DO_USUARIO]/bin/gdrive sync upload --delete-extraneous $base_path $folder_gdrive_id
echo "Sincronização finalizada com sucesso."

Para testar execute o script criado com o comando:

sh backup-gdrive.sh

Automatizando backup postgres com crontab

Insira o comando no arquivo crontab que fica em /etc/crontab, e altere o valor entre colchetes. Ex: [NOME_DO_USUARIO] para kelvin:

# Backup postgres and sync gdrive (todo dia 01:00 da manha)
1 0 * * * [NOME_DO_USUARIO] /home/[NOME_DO_USUARIO]/backup-gdrive.sh

Assim o script de backup irá ser executado todo dia ás 01:00 da manhã.

Dúvidas?

Você tem outras dúvidas? Deixe seu feedback nos comentários abaixo.