Tudo o que quer saber antes de instalar.
Uma análise detalhada de como o Cópia de Segurança PrestaShop 8 e 9: Base de Dados e Ficheiros, Cifrada S3/FTP funciona, porque o construímos assim e o raciocínio por trás das funcionalidades acima.
Uma cópia de segurança a sério, não um script improvisado
A maioria dos módulos de cópia de segurança do PrestaShop limita-se a chamar o mysqldump e a criar um tar da pasta da loja, o que levanta três problemas em produção: o mysqldump não está disponível na maioria dos alojamentos partilhados, o shell_exec está desativado por razões de segurança e os arquivos não cifrados deixados no disco são uma bomba-relógio em caso de compromisso. O dfbackup resolve os três pontos: cópia da base de dados em PHP puro, arquivo por ZipArchive e cifra AES-256 autenticada opcional com frase-passe do utilizador. Tudo funciona em alojamento partilhado, sem configuração especial.
Cifra AES-256 com HMAC: encrypt-then-MAC feito como deve ser
O padrão encrypt-then-MAC é o recomendado pelos criptógrafos para esquemas simétricos: cifra-se primeiro e calcula-se depois um HMAC sobre o texto cifrado e o IV. Na leitura, verifica-se o HMAC antes de decifrar, o que protege contra ataques de inversão de bits e contra padding oracle. A frase-passe do utilizador passa por PBKDF2-SHA256 com 120 000 iterações para derivar uma chave de cifra e uma chave HMAC separadas (32 bytes cada). O formato binário IV-HMAC-texto cifrado está documentado, é auditável e pode ser lido por qualquer ferramenta compatível com OpenSSL. A frase-passe nunca é guardada em claro: apenas o hash gerado por password_hash fica conservado para verificação.
S3 SigV4 nativo: multipart, MinIO, R2, OVH, Scaleway, Wasabi e B2
Em vez de incluir o SDK oficial da AWS (que pesa vários MB e obriga ao Composer), o dfbackup implementa diretamente a AWS Signature V4 em cURL. Cerca de uma centena de linhas de código, zero dependências externas e uma assinatura canónica compatível com todos os serviços que falam S3. Pode apontar o dfbackup para o Amazon S3 na região eu-west-3, para o MinIO no seu próprio VPS, para o Cloudflare R2 (10 GB gratuitos e sem custo de saída), para o OVH Object Storage, para o Scaleway, para o Wasabi ou para o Backblaze B2: todos funcionam mudando apenas o endpoint e a região nas definições. Acima de 100 MB, o envio passa automaticamente a multipart com partes de 10 MB, o que permite transferir um arquivo de vários gigabytes sem saturar a memória.
Replicação: um staging noturno sem trabalho de sysadmin
É a funcionalidade que distingue o dfbackup: a possibilidade de enviar cada cópia para uma segunda instalação PrestaShop. Instala o dfbackup na produção e no staging, partilha um segredo comum e assinala Replicação como destino de armazenamento. A cada cópia, manual ou agendada, o arquivo é enviado em blocos de 8 MB assinados por HMAC-SHA-256 para um controlador dedicado no destino. Se a opção de restauro automático estiver ativa no destino, a cópia é aplicada automaticamente e o staging fica atualizado na manhã seguinte com os dados da véspera. Deixa de precisar de rsync, de scripts de cron, de transferências FTP manuais ou de licenças de ferramentas externas.
Restauro num clique com rede de segurança
O restauro de uma cópia é a operação mais arriscada do ciclo de vida de uma loja: sobrescreve-se a base de dados viva com uma versão anterior, substituem-se todos os ficheiros e, se algo correr mal, voltar atrás é complicado. O dfbackup acrescenta uma rede de segurança automática: antes de cada restauro, é criado silenciosamente um instantâneo apenas da base de dados. Se o restauro falhar a meio (arquivo corrompido, erro de SQL, falta de espaço em disco), restaura esse instantâneo e volta ao estado inicial em poucos minutos. A própria tabela dfbackup nunca é sobrescrita durante um restauro, pelo que o histórico de cópias se mantém mesmo quando restaura uma versão de há seis meses.
Cópias em segundo plano: um clique e registos em direto
A experiência clássica de um botão de cópia em PHP é conhecida: clica-se, o navegador fica bloqueado 5 a 15 minutos, o utilizador julga que falhou, volta a clicar, arrancam duas cópias em paralelo e o bloqueio dá erro. O dfbackup resolve isso em dois tempos: o clique pré-aloca uma linha na base de dados, dispara uma autochamada cURL para um controlador dedicado e devolve o ID de imediato (menos de 500 ms). O navegador mostra logo uma barra de progresso e consulta os registos em tempo real, com as 15 etapas a passarem (arranque, cópia da base de dados, arquivo de ficheiros, cifra, cálculo de checksum, envio para cada destino e rotação). A cópia corre no seu próprio processo PHP, completamente separada do pedido do utilizador. Funciona em todos os modos de PHP: FPM, mod_php e FastCGI.
Agendamento: cron nativo do PS e web-cron de recurso
Nos alojamentos partilhados que não dão acesso ao cron de sistema, o hook actionCronJob do PrestaShop só corre quando alguém visita a loja, o que não serve para agendar uma cópia noturna. O dfbackup fornece um web-cron de recurso: um URL assinado por token (regenerável no back-office) que um serviço externo como o cron-job.org ou o EasyCron chama pelo menos de hora a hora. O módulo verifica internamente a hora-alvo configurada (por exemplo 03:00 diárias) e só lança a cópia dentro da janela prevista. A desduplicação de 60 minutos evita disparos duplicados. O controlador webcron passa pelo dispatcher do PrestaShop, por isso funciona mesmo quando o alojamento bloqueia o acesso direto aos PHP dentro de modules.
Registo de auditoria, alertas no back-office e instantâneo antes de atualizar: defesa em profundidade
Três mecanismos complementares para evitar que uma cópia se perca sem que ninguém dê por isso. O registo de auditoria guarda cada ação sensível (arranque, restauro, eliminação, verificação e transferência) com colaborador, IP e data e hora, útil para reconstituir um incidente. O alerta de back-office mostra uma faixa amarela ou vermelha no topo de todas as páginas de administração se a última cópia falhou ou tem mais de 7 dias, pelo que é impossível esquecer. O instantâneo antes de atualizar dispara automaticamente antes de cada atualização de um módulo instalado: se a atualização partir alguma coisa, restaura num clique. Os três mecanismos podem ser ativados e desativados de forma independente nas Definições.
Ainda não existem avaliações.