Este repositório tem como objetivo desenvolver um script em .bat
que utiliza o PG_DUMP
para criar um backup local de um banco de dados PostgreSQL no formato .tar. Para efetuar o envio desse backup para a nuvem, fazemos uso da biblioteca PyDrive
juntamente com a API do Google Drive
. Com o auxílio do Agendador de Tarefas do Windows, é possível automatizar o processo de criação do backup local e, em seguida, executar um programa em Python que se encarregará de enviar o arquivo para o Google Drive.
(Windows)
cd %APPDATA%
mkdir postgresql
cd postgresql
notepad pgpass.conf
localhost:5432:database:user:psswd
Agora temos um arquivo pgpass para acessar o backup sem pedir senha, isso é interessante para automatizar o processo. Agora iremos criar um arquivo .bat
para executar o pg_dump
@echo off
setlocal
echo Configurando variaveis
set DB_USER=eduardo # usuario
set DB_NAME=bicimoto # database
set BACKUP_DIR=C:\Users\Eduar\Documents\backup # pasta de backup
set TIMESTAMP=%DATE:~10,4%-%DATE:~7,2%-%DATE:~4,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2% # nome do backup (data)
set BACKUP_FILE=%BACKUP_DIR%\%DB_NAME%\%TIMESTAMP%.tar # caminho do arquivo backup.tar
echo Backup com pg_dump
pg_dump.exe -U %DB_USER% -w -F t %DB_NAME% > "%BACKUP_FILE%"
echo Verificando o backup
if exist "%BACKUP_FILE%" (
echo Backup %DB_NAME% realizado com sucesso!
) else (
echo Erro ao realizar backup!
)
endlocal
Dessa forma, ja temos um programa .bat que executa o backup do banco.
Para realizarmos a operção de restauração:
pg_restore -U postgres -d bicimoto C:\backup\bicimoto.tar
- Acesse: Google Cloud
- Crie um projeto novo
- Acesse: Google Drive API e adicione ao projeto
- Crie uma nova credencial do tipo ID do Cliente OAuth:
- Na configuração da credencial adicione a URI de redirecionamento autorizados:
- Nas configurações de tela de permissão OAtuh:
- Com a API configurada podemos baixar o arquivo Json com as credenciais de acesso:
- O nome do arquivo baixado será algo parecido com:
client_secret_5jd89asdh786dgi76uguq6yg.apps.googleusercontent.com
Renomeie paraclient_secrets
- Mova o
client_secrets.json
para a pasta raiz do script Python.