Manual de Backup e Restauração para Banco de Dados PostgreSQL no Docker
🔑 Como descobrir a senha do banco no Whazing
Em sistemas baseados no Whazing, a senha do banco de dados não fica em um lugar visível no painel.
Ela está salva em um arquivo de configuração do sistema, chamado .env
.
📂 Onde fica o arquivo .env
.env
No Ubuntu (servidores padrão de instalação), o arquivo está no caminho:
/home/deploy/whazing/backend/.env
Esse arquivo contém todas as informações de conexão com o banco de dados (usuário, senha, nome do banco e endereço do servidor).
1. Identificar o ID do Container do PostgreSQL
Antes de qualquer operação, precisamos do ID do container onde o PostgreSQL está rodando. Para listar os containers ativos, use:
docker ps
Anote o CONTAINER ID correspondente ao PostgreSQL, pois será necessário nos próximos comandos.

2. Fazer Backup do Banco de Dados
Comando para gerar o backup
Substitua iddocker "exemplo acima é 9bd60958203a" pelo ID do seu container e senha pela senha correta do PostgreSQL.
docker exec -i iddocker /bin/bash -c "PGPASSWORD=senha pg_dump --username=whazing --dbname=postgres" > dump.sql
Isso criará um arquivo dump.sql contendo o backup do banco de dados.
3. Restaurar o Banco de Dados
Importante:
A restauração deve ser feita em um banco de dados vazio.
Caso precise, crie um novo banco antes de restaurar.
Comando para criar banco de dados
docker exec -i iddocker /bin/bash -c "PGPASSWORD=senha psql --username=whazing --dbname=postgres -c 'CREATE DATABASE novobanco;'"
Comando para restaurar o backup
docker exec -i iddocker /bin/bash -c "PGPASSWORD=senha psql --username=whazing --dbname=novobanco" < dump.sql
Depois, atualize o arquivo .env do backend para apontar para o novo banco e reinicie o sistema.
4. Compactar e Descompactar o Backup
Compactar o arquivo para economizar espaço
gzip dump.sql
Isso criará um arquivo dump.sql.gz.
Descompactar quando precisar restaurar
gunzip dump.sql.gz
Isso trará o backup de volta para dump.sql.
5. Transferir o Backup para Outra VPS
Se quiser copiar o backup para outro servidor, substitua deploy@ip pelo usuário e IP da VPS de destino:
scp dump.sql.gz deploy@ip:/home/deploy/
6. Backup de Arquivos da Pasta "Public" e Envio para Outra VPS
O script abaixo copia apenas os arquivos modificados nas últimas 25 horas e os envia para outra VPS.
Criação do Script
Crie um arquivo chamado backup_pasta.sh e cole o código abaixo:
#!/bin/bash
# Diretório de origem
DIR="/home/deploy/whazing/backend/public/"
# Diretório de destino do backup
BACKUP_DIR="/home/deploy/whazing/backup/"
# Nome do arquivo de backup com data e hora
BACKUP_FILE="backup_$(date +%Y%m%d%H%M%S).tar.gz"
# Tempo limite para considerar arquivos novos (em horas)
TIME_LIMIT="25"
# Criar diretório de backup se não existir
mkdir -p "$BACKUP_DIR"
# Compactar arquivos alterados nas últimas 25 horas
find "$DIR" -type f -mmin -$((TIME_LIMIT * 60)) | tar -czf "$BACKUP_DIR$BACKUP_FILE" -T -
# Transferir o backup para outra VPS
scp "$BACKUP_DIR$BACKUP_FILE" deploy@ipvps:/home/deploy/backup
# Remover o arquivo local após envio
rm "$BACKUP_DIR$BACKUP_FILE"
7. Backup do Banco de Dados e Transferência para Outra VPS
Esse script faz o backup do banco, compacta e envia automaticamente para outra VPS.
Criação do Script
Crie um arquivo chamado backup_db.sh e cole o código abaixo:
#!/bin/bash
echo "INICIANDO BACKUP DO BANCO DE DADOS..."
# Data atual no formato dd-mm-YYYY
DATA=`date +%d-%m-%Y`
# Criar o backup
docker exec -i iddocker /bin/bash -c "PGPASSWORD=senha pg_dump --username=whazing --dbname=postgres" > "$DATA".whazing.sql
# Compactar o arquivo
gzip "$DATA".whazing.sql
# Transferir para a outra VPS
scp "$DATA".whazing.sql.gz deploy@ipvps:/home/deploy/backup
# Remover o backup local após o envio
rm "$DATA".whazing.sql.gz
echo "BACKUP CONCLUÍDO!"
8. Agendar Backup Automático (Cronjob)
Passo 1: Tornar o script executável
Se criou o arquivo backup.sh na pasta /home/deploy/
, torne-o executável:
chmod +x /home/deploy/backup.sh
Passo 2: Configurar o agendamento no Cron
Abra o agendador de tarefas:
crontab -e
Adicione a linha abaixo para executar o backup todos os dias às 2h da manhã:
0 2 * * * /home/deploy/backup.sh
9. Acesso a Outra VPS sem Senha (Para Backups Automáticos)
Para evitar que o sistema peça senha ao transferir arquivos via scp, use este comando:
cat ~/.ssh/id_rsa.pub | ssh deploy@endereco_IP_remoto "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Isso permitirá conexões automáticas entre os servidores.
10. Dúvidas?
Se precisar de mais detalhes, use o ChatGPT como aliado para entender melhor esses comandos! 🚀
Atualizado