3.5 KiB
rsdb
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/rsdb
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/rsdb)")/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:
rsdb
Listar dumps remotos e locais:
rsdb list
Restaurar diretamente um dump local ou remoto, ainda com confirmação:
rsdb restore backup.sql.gz
Simular uma restauração sem baixar, apagar ou restaurar:
rsdb restore backup.sql.gz --dry-run
Validar configuração, pasta local, conexão S3 e ferramentas PostgreSQL:
rsdb doctor
rsdb config-check continua disponível como comando compatível.
Mostrar a configuração carregada, com senhas mascaradas:
rsdb config show
Apagar dumps locais, após confirmação:
rsdb clean
Apagar apenas dumps locais mais antigos que 30 dias:
rsdb 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 mostra o 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:
rsdb.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.