# Restore Assistant 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/restore-assistant ``` ## 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: ```bash ~/.config/rsdb/config.yml ``` Senhas são perguntadas sem eco no terminal. O programa também continua aceitando `.env` e `config.toml` na raiz do projeto. A ordem de precedência é: 1. Variáveis de ambiente / `.env` 2. `config.toml` local 3. `~/.config/rsdb/config.yml` Exemplo `.env`: ```bash cp .env.example .env ``` Exemplo `config.toml`: ```bash cp config.example.toml config.toml ``` Exemplo `config.yml`: ```bash mkdir -p ~/.config/rsdb cp config.example.yml ~/.config/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 restore-assistant ``` Listar dumps remotos e locais: ```bash restore-assistant list ``` Restaurar diretamente um dump local ou remoto, ainda com confirmação: ```bash restore-assistant restore backup.sql.gz ``` Validar configuração, pasta local, conexão S3 e ferramentas PostgreSQL: ```bash restore-assistant config-check ``` ## 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 restore-assistant.log ``` Erros exibidos na TUI ou CLI são resumidos para o usuário; detalhes técnicos ficam no log.