# 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`: - `psql` - `pg_restore` - Acesso ao bucket MinIO/S3 com API compatível com S3 ## Instalação ```bash cargo build --release ``` O binário ficará em: ```bash 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 é: 1. Variáveis de ambiente / `.env` 2. `config.toml` local 3. `config.yml` na mesma pasta do executável Exemplo `.env`: ```bash cp .env.example .env ``` Exemplo `config.toml`: ```bash cp config.example.toml config.toml ``` Exemplo `config.yml`: ```bash cp config.example.yml "$(dirname "$(realpath target/release/rsdb)")/config.yml" ``` Variáveis obrigatórias: - `MINIO_ENDPOINT` - `MINIO_ACCESS_KEY` - `MINIO_SECRET_KEY` - `MINIO_BUCKET` - `POSTGRES_HOST` - `POSTGRES_PORT` - `POSTGRES_USER` - `POSTGRES_PASSWORD` - `POSTGRES_DATABASE` Opcionais: - `MINIO_REGION`, padrão `us-east-1` - `POSTGRES_SSLMODE`, padrão `prefer` - `DUMPS_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: ```bash rsdb ``` Listar dumps remotos e locais: ```bash rsdb list ``` Restaurar diretamente um dump local ou remoto, ainda com confirmação: ```bash rsdb restore backup.sql.gz ``` Simular uma restauração sem baixar, apagar ou restaurar: ```bash rsdb restore backup.sql.gz --dry-run ``` Validar configuração, pasta local, conexão S3 e ferramentas PostgreSQL: ```bash rsdb doctor ``` `rsdb config-check` continua disponível como comando compatível. Mostrar a configuração carregada, com senhas mascaradas: ```bash rsdb config show ``` Apagar dumps locais, após confirmação: ```bash rsdb clean ``` Apagar apenas dumps locais mais antigos que 30 dias: ```bash rsdb clean --older-than-days 30 ``` ## Controles da TUI - `↑`/`↓` ou `k`/`j`: navegar - `/`: filtrar por nome - `Esc`: limpar filtro ou cancelar confirmação - `r`: atualizar listas - `d`: apagar o arquivo local do dump selecionado, após confirmação - `Enter`: selecionar/restaurar - `q`: 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 com `psql` - `.sql.gz`, `.sql.zst`: descompactados e restaurados com `psql` - `.dump`, `.backup`, `.bin`, `.binary`, `.tar`: restaurados com `pg_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 com `pg_restore` ## Logs Logs técnicos são gravados em: ```bash rsdb.log ``` O histórico de restaurações é salvo em: ```bash /history.yml ``` Erros exibidos na TUI ou CLI são resumidos para o usuário; detalhes técnicos ficam no log.