Home Fazendo backup do servidor para o Drive
Post
Cancelar

Fazendo backup do servidor para o Drive

Desde que migre minha instância do webBudget do Jeslastic para o Vultr precisei fazer algumas coisas manuais e uma delas foi automatizar o backup do banco de dados. Aqui vou contar um pouco como fiz isso usando o google drive como local de armazenamento.

Contexto

Depois que saí da minha instância do Jelastic, um ótimo cloud provider que te entrega tudo de maneira simples e com uma interface de gerenciamento bem simples, acabei por migrar para um outro mais simples (e drasticamente mais barato!), o Vultr.

Lá as coisas são mais “by-hands”, ou seja, nada de interfaces botõezinhos coloridos para clicar e ter as coisas funcionando, como toda VPS você precisa acessar o servidor e fazer as instalações que precisa, por conta.

Não é um problema pra mim, subi rapidamente a infra do webBudget v3 com wildfly e postgres, tudo lindo! Até que lembrei que um backup do banco de dados era algo importante. Mas onde eu ia armazenar isso?

Neste momento, havia 2 opções:

  1. Deixar no servidor
  2. Mandar para algum lugar

A primeira opção era a mais simples porém a que não me serviria de nada caso a minha instância morresse por causas desconhecidas, sendo assim, fiquei com a segunda e o local onde escolhi jogar os arquivos foi o Google Drive.

Cliente do GDrive

Utilizando este cliente tudo ficou muito fácil! Basicamente, você precisa fazer o download do cliente e com um simples comando, configurar o mesmo para a sua conta e pronto, pode fazer upload, download entre outras coisas direto do seu google drive.

Configurando

Depois de deixar o seu cliente em um local adequado no seu servidor linux, execute o seguinte comando gdrive about e isso irá gerar um link no seu console, copie ele e cole no seu browser, uma tela de autorização do OAuth vai aparecer e lá basta autorizar com sua conta.

Após este processo, copie o código de ativação mostrado e cole novamente no console e pronto! Ah, você ainda pode usar gdrive help para ver a lista de comandos disponíveis.

O script

Para facilitar as coisas criei então um script, assim fica mais de boas rodar todo o processo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash

BACKUP_DIR=/root/backups # onde vou gerar o backup local, no server
FOLDER_ID= # informe aqui o id da pasta de destino
DAYS_TO_KEEP=5 # dias para manter os backups por aqui no server?
FILE_SUFFIX=_pg_backup.sql # sufixo do arquivo de backup
DATABASE=webbudget # o banco pra fazer backup
USER=sa_webbudget # o usuário que pode fazer o backup
HOST=localhost # o host do banco

FILE=`date +"%Y%m%d%H%M"`${FILE_SUFFIX}

OUTPUT_FILE=${BACKUP_DIR}/${FILE}

# dump
pg_dump --file ${OUTPUT_FILE} 
  --host ${HOST} 
  --username ${USER} 
  --format=p 
  --no-owner 
  --section=pre-data 
  --section=data 
  --section=post-data 
  --no-privileges 
  --no-tablespaces 
  --no-unlogged-table-data 
  --inserts ${DATABASE}

# gzipa o arquivo
gzip $OUTPUT_FILE

# mostra umas infos
echo "${OUTPUT_FILE}.gz was created:"
ls -l ${OUTPUT_FILE}.gz

# upload pro drive
/usr/local/bin/gdrive upload --parent ${FOLDER_ID} ${OUTPUT_FILE}.gz

# deleta os backups antigos
find $BACKUP_DIR -maxdepth 1 -mtime +$DAYS_TO_KEEP -name "*${FILE_SUFFIX}.gz" -exec rm -rf '{}' ';'

Importante! você vai precisar do ID da pasta no Google Drive se quiser enviar os arquivos para ela. Para pegá-lo, basta abrir o drive e copiar no final da URL, exemplo: /folders/o-id-fica-aqui. Cole ele ali na variável e sucesso!

Estou tendo problemas com um erro 400 após um certo tempo, dicas? Sim, o token vence! Será preciso autenticar novamente, veja esse link aqui.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.

Integrando retry template com rest template no Spring em Kotlin

-

Comments powered by Disqus.