| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| config.example.toml | ||
| config.example.yml | ||
| README.md | ||
| restoredb.log | ||
restoredb
Assistente CLI/TUI em Rust para listar dumps em MinIO/S3, baixar arquivos para uma pasta local e restaurar um banco PostgreSQL com DROP DATABASE e recriação controlados por confirmação explícita.
Requisitos
- Rust stable
- Ferramentas PostgreSQL no
PATH:psqlpg_restore
- Acesso ao bucket MinIO/S3 com API compatível com S3
Instalação
cargo build --release
O binário ficará em:
target/release/restoredb
Configuração
Na primeira execução, se nenhuma configuração completa existir, o programa pergunta os campos um a um, no estilo do rclone, e salva em config.yml na mesma pasta do executável.
Senhas são perguntadas sem eco no terminal. O programa também continua aceitando .env e config.toml na raiz do projeto.
Também é possível distribuir esse config.yml junto do binário. Ele é usado como fallback para completar valores ausentes.
A ordem de precedência é:
- Variáveis de ambiente /
.env config.tomllocalconfig.ymlna mesma pasta do executável
Exemplo .env:
cp .env.example .env
Exemplo config.toml:
cp config.example.toml config.toml
Exemplo config.yml:
cp config.example.yml "$(dirname "$(realpath target/release/restoredb)")/config.yml"
Variáveis obrigatórias:
MINIO_ENDPOINTMINIO_ACCESS_KEYMINIO_SECRET_KEYMINIO_BUCKETPOSTGRES_HOSTPOSTGRES_PORTPOSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_DATABASE
Opcionais:
MINIO_REGION, padrãous-east-1POSTGRES_SSLMODE, padrãopreferDUMPS_DIR, padrão./dumps
Senhas nunca são exibidas. A senha do PostgreSQL é passada para psql e pg_restore por PGPASSWORD.
Uso
Abrir a TUI:
restoredb
Listar dumps remotos e locais:
restoredb list
Restaurar diretamente um dump local ou remoto, ainda com confirmação:
restoredb restore backup.sql.gz
Simular uma restauração sem baixar, apagar ou restaurar:
restoredb restore backup.sql.gz --dry-run
Validar configuração, pasta local, conexão S3 e ferramentas PostgreSQL:
restoredb doctor
restoredb config-check continua disponível como comando compatível.
Mostrar a configuração carregada, com senhas mascaradas:
restoredb config show
Apagar dumps locais, após confirmação:
restoredb clean
Apagar apenas dumps locais mais antigos que 30 dias:
restoredb clean --older-than-days 30
Controles da TUI
↑/↓ouk/j: navegar/: filtrar por nomeEsc: limpar filtro ou cancelar confirmaçãor: atualizar listasd: apagar o arquivo local do dump selecionado, após confirmaçãoEnter: selecionar/restaurarq: sair
Antes da restauração, a TUI sugere o banco de destino a partir do nome do dump, permite editar esse valor e então mostra host, banco de destino e dump selecionado, com aviso de que o banco será apagado. A restauração só ocorre após confirmação.
Formatos suportados
.sql: restaurado compsql.sql.gz,.sql.zst: descompactados e restaurados compsql.dump,.backup,.bin,.binary,.tar: restaurados compg_restore.dump.gz,.dump.zst,.backup.gz,.backup.zst,.bin.gz,.bin.zst,.binary.gz,.binary.zst,.tar.gz,.tar.zst: descompactados para arquivo temporário e restaurados compg_restore
Logs
Logs técnicos são gravados em:
restoredb.log
O histórico de restaurações é salvo em:
<DUMPS_DIR>/history.yml
Erros exibidos na TUI ou CLI são resumidos para o usuário; detalhes técnicos ficam no log.