Imagem de capa do projeto: Nexus Backup Manager EM ANDAMENTO

Resumo técnico

Plugin nativo do NEXUS que cria backups de banco, arquivos ou pacotes completos e os envia a destinos locais ou remotos por uma arquitetura de conectores. Suporta FTP, SFTP e provedores de nuvem, protege credenciais com AES-256-CBC e integra agendamento, retenção, progresso e restauração ao fluxo operacional do painel.

Escopo executado

  • Backend backend.php (911 linhas): backup_mysql_dump() (mysqldump com single-transaction, routines e triggers), backup_files_zip() (uploads, plugins, scripts + caminhos extras) e backup_create_full() (dump + zip empacotados em tar.gz, com limpeza de temporários).
  • Progresso em tempo real via progress.json com polling (backup_progress) e lock de 10 minutos (backup_is_running) que evita execuções concorrentes.
  • Arquitetura de conectores: classe abstrata BackupConnector (getType/getName/getFields/test/upload + OAuth opcional) e BackupConnectorManager com varredura dinâmica da pasta connectors/ e auto-registro.
  • 8 conectores implementados: local, ftp (timeout 15s, criação recursiva de pastas), sftp (ssh2, subsistema SFTP), dropbox (OAuth2 code + refresh, renovação de token automática, upload em content.dropboxapi.com/2/files/upload), google-drive (OAuth2 offline escopo drive.file, upload multipart/related, navegador e criação de pastas), mega (autenticação via API g.api.mega.co.nz em modo simplificado), mediafire (API 1.5 session token) e terabox (cookie de sessão BDSTX).
  • OAuth completo no painel: backup_oauth_callback (bypass de autenticação no api.php), popup com postMessage({type:'nexus_oauth_success'}), redirect URI dinâmica copiável, campos readonly para tokens obtidos automaticamente.
  • Destinos: CRUD com teste de conexão por tipo (status ATIVO/FALHA/NÃO TESTADO com last_test/last_error), geração automática de ID (dest_ + hex) e criptografia AES-256-CBC das credenciais (pass, access_token, refresh_token, client_secret, cookie) antes do DB::setConfig('plugin.backup.destinations', ...).
  • Agendamento soft-cron: configuração em admin_configs (plugin.backup.schedule), job backup no cronjob.json (frequência hourly/daily/weekly/monthly, horário, tipo, destino, retenção 1–100, notificação), cálculo de next_run e backup_cron_check() disparado pelo loop de cron do api.php (worker/cron/run_cron) — sem alterar o crontab do SO.
  • Retenção automática (backup_apply_retention) por data de modificação (padrão 10 backups) com registro em log.
  • Restauração com um clique: .sql via CLI mysql, .zip via ZipArchive e .tar.gz via tar -xzf, com confirmação em modal.
  • Metadados sidecar: cada backup grava <arquivo>.json com started_at, completed_at, tipo, destino e status do upload remoto (ENVIADO/FALHOU).
  • UI Alpine.js (tab.php 830 linhas + assets/backup.js 555 linhas): cards de estatísticas (total, banco, arquivos, completos, tamanho), tabela com busca e paginação, barra de progresso, modais x-teleport com backdrop blur, campos dinâmicos por conector, explorador de pastas do Google Drive (com nota sobre o escopo drive.file), guias de configuração embutidas (MediaFire, Dropbox, Google) e visualizador do log (últimas 200 linhas) em estilo terminal.
  • API: 16 actions registradas via PluginManager::registerApiAction — backup_list, backup_create, backup_delete, backup_download, backup_restore, backup_destinations, backup_destination_save, backup_destination_delete, backup_destination_test, backup_schedule, backup_schedule_save, backup_log, backup_oauth_callback, backup_progress, backup_destination_folders, backup_destination_create_folder (autenticadas por sessão/Bearer com CSRF; apenas o callback OAuth tem bypass de auth).

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (configurações em admin_configs; sem tabelas dedicadas)
  • Alpine.js + Tailwind CSS
  • cURL (uploads cloud e fluxos OAuth), OpenSSL (AES-256-CBC), ZipArchive, CLI mysqldump/mysql/tar
  • Sistema de plugins do NEXUS (PluginManager)

Tags operacionais

  • Backup
  • Restauração
  • Cloud Storage
  • Cronjobs

Resultado operacional

  • Consolidou a política de backup do NEXUS em um único plugin: dump MySQL, compactação de arquivos e pacote completo tar.gz, com envio opcional para múltiplos destinos.
  • Credenciais de provedores cloud nunca são persistidas em texto plano (criptografia AES-256-CBC com chave do painel no admin_configs).
  • Agendamento integrado ao hub Cronjobs (job backup), eliminando a dependência de crontab manual no sistema operacional.
  • Guia de configuração passo a passo dos provedores (Dropbox, Google Drive, Mega, MediaFire, Terabox) embutido na interface e na documentação do plugin.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin nativo do NEXUS para backups multi-destino (banco, arquivos e completo) com envio para local, FTP/SFTP e provedores cloud (Dropbox, Google Drive, Mega, MediaFire, Terabox), credenciais criptografadas e agendamento soft-cron.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.