Backup do Moodle: a rotina que salva a instituição

Banco, moodledata e código: o que copiar, com que frequência e como provar que a restauração funciona antes do desastre chegar.

por Cleverson Gouvêa

O backup do Moodle é a rotina que ninguém elogia — até o dia em que ela salva o semestre. Um professor apaga a unidade errada, um upgrade trava, um disco falha na véspera das provas. A diferença entre um susto de vinte minutos e uma crise de três semanas foi decidida meses antes, na rotina que você montou (ou não montou).

Escrevo como desenvolvedor full stack, certificado em Moodle e fundador da Agathas Web, administrando ambientes Moodle em produção desde 2008 — incluindo instalações com milhares de alunos simultâneos. Este texto é a conversa sobre backup do Moodle que tenho com todo gestor de EAD na primeira reunião técnica: o que copiar, com que frequência, como testar e onde a conta estoura.

TL;DR — o essencial

  • Um backup do Moodle completo tem três peças: banco de dados, moodledata e código. Faltando uma, você tem um arquivo, não um backup.
  • O backup de curso (.mbz) não substitui o backup do Moodle inteiro. Ele nem carrega as senhas dos usuários.
  • Um backup do Moodle que nunca foi restaurado é hipótese, não garantia. Teste a restauração todo mês, com cronômetro.
  • No relatório State of Ransomware in Education 2026 da Sophos, 77% das instituições de educação básica e 69% das de ensino superior recuperaram dados criptografados a partir de backups. O custo médio de recuperação no setor foi de US$ 2,26 milhões.
  • A Resolução CD/ANPD nº 15/2024 dá três dias úteis para comunicar incidente com dados pessoais. Descobrir que o backup não presta no terceiro dia é tarde.

As três peças do backup do Moodle (e por que duas não bastam)

A documentação oficial do Moodle é direta: um backup de site tem três componentes. Quem copia só um descobre a falha tarde demais.

1. O banco de dados

É o coração do backup do Moodle e onde vive tudo que não é arquivo: usuários, matrículas, notas, tentativas de questionário, fóruns, logs, configurações e a estrutura de cada curso. Sem ele, os arquivos do moodledata viram blobs sem nome e sem dono.

O alerta da documentação vale repetir: dump com codificação errada volta com acentuação quebrada em todo o conteúdo em português. Use UTF-8 explicitamente e confira antes de confiar.

2. O diretório moodledata

É o diretório fora do webroot onde o Moodle guarda arquivos enviados, submissões, imagens de curso, cache e sessões. Num backup do Moodle de instituição média ele é, de longe, a maior fatia de volume — e a que mais cresce sem ninguém perceber.

3. O código e os plugins

O código você baixa de novo do site oficial. O que não se baixa é o config.php, o tema customizado, os plugins de terceiros nas versões exatas que rodavam e os patches aplicados à mão. Um backup do Moodle sem o diretório de código obriga a reconstruir o ambiente por arqueologia — e é aí que o RTO estoura.

Backup de curso (.mbz) não é backup de site

É a confusão mais cara que encontro em auditoria de backup do Moodle. O professor exporta o curso, guarda o .mbz no Drive e dá o assunto por resolvido. Não está.

O .mbz é, por padrão, um TGZ com a estrutura do curso (dá para usar ZIP com $CFG->usezipbackups = true; no config.php). É excelente para mover um curso entre sites, clonar disciplina ou recuperar atividade apagada. E é péssimo como plano de recuperação de desastre, por três motivos:

  • As senhas não vão no backup, mesmo marcando "incluir usuários matriculados". Restaurar em outro servidor significa todo mundo redefinindo senha.
  • Nem tudo entra. A FAQ oficial de backup e restauração lista exclusões como questões fora de uso, escalas não utilizadas e badges ainda não concedidos.
  • Ele ignora o site. Configurações globais, plugins, autenticação, integração com o sistema acadêmico, temas — nada disso está no .mbz.

Regra prática: .mbz é ferramenta pedagógica e de portabilidade. Backup do Moodle enquanto plataforma é infraestrutura — e mora em outro lugar.

Defina RPO e RTO antes de escolher a ferramenta

Antes da primeira linha de script, responda em números as duas perguntas que definem o backup do Moodle na sua instituição. RPO (Recovery Point Objective) é quanto conteúdo você aceita perder, em tempo. RTO (Recovery Time Objective) é quanto tempo você aceita ficar fora do ar.

A resposta muda o desenho inteiro. Um Moodle corporativo com conteúdo estático tolera RPO de 24 horas. Um Moodle com prova online valendo nota não tolera 15 minutos — perder as tentativas em andamento significa anular a avaliação de centenas de alunos.

Cenário RPO aceitável RTO aceitável O que resolve
Professor apagou uma atividade Última noite 1 hora Backup automático de curso (.mbz)
Upgrade de versão deu errado Momento pré-upgrade 2 horas Snapshot completo + rollback ensaiado
Disco / servidor perdido 15 min a 24 h 4 a 8 horas Dump offsite + moodledata replicado
Ransomware 24 h (cópia imutável) 1 a 3 dias Cópia offline/imutável fora do domínio
Erro descoberto 20 dias depois 30 dias de retenção 1 dia Retenção longa + versionamento

Essa tabela é conversa de diretoria, não da TI sozinha: dimensionar o backup do Moodle é decisão de negócio, e cada degrau a menos custa storage e janela de manutenção.

Como configurar o backup automático de cursos no Moodle

O Moodle traz uma rotina nativa de backup de cursos que roda pelo cron, em Administração do site → Cursos → Backups → Configuração de backup automatizado (backup_auto_active). É o primeiro degrau do backup do Moodle em qualquer instituição — desde que você conheça os limites.

Passo a passo do que configurar:

  1. Ative a rotina e escolha dias da semana e horário de execução.
  2. Aponte o destino para fora do disco do Moodle. A documentação recomenda escolher um caminho "em outra máquina ou em um drive diferente daquele onde o Moodle está". Deixar no moodledata padrão lota o disco rápido.
  3. Ajuste os filtros de escopo: Skip hidden courses (padrão: sim) e Skip courses not modified since (padrão: 30 dias). Poupam processamento — e são a razão pela qual aquele curso arquivado nunca apareceu no backup.
  4. Calibre a retenção, que é onde quase todo mundo escorrega.
  5. Confirme que o cron roda de verdade. Sem cron ativo, a configuração fica bonita na tela e não gera um único arquivo. Pela linha de comando: php admin/cli/automated_backups.php.

A armadilha da retenção

Três configurações interagem sem que o Moodle valide a combinação: backup_auto_max_kept (máximo por curso), backup_auto_delete_days (apaga o que passar de X dias) e backup_auto_min_kept (piso que nunca é removido). Se o piso for maior que a contagem real por curso, a limpeza não acontece — e o disco enche em silêncio até o Moodle parar de gravar. Ao mexer nesses valores, refaça a aritmética.

A armadilha da janela

A documentação avisa: rodar a rotina sobre todos os cursos é intensivo em processamento e não deve acontecer com muitos estudantes no ar. Em instituição brasileira, o pior horário é das 19h às 22h — quando o aluno que trabalha de dia entra na plataforma. Agendar para 20h é autossabotagem.

O backup de infraestrutura que o Moodle não faz por você

A rotina nativa cuida de cursos. O backup do Moodle como plataforma é de quem administra o servidor — e é aqui que a hospedagem genérica deixa a instituição na mão. Sem um sysadmin dedicado, essa lacuna é exatamente o que uma hospedagem Moodle gerenciada fecha. O desenho mínimo que uso em produção:

  • Dump lógico do banco, diário e consistente: mysqldump --single-transaction --default-character-set=utf8mb4 moodle > moodle.sql (em PostgreSQL, pg_dump -Fc). A transação única evita travar as tabelas InnoDB durante a cópia.
  • Binlog para point-in-time recovery. O dump diário dá RPO de 24 horas; o binlog derruba isso para minutos, reconstruindo o banco até o instante anterior ao erro.
  • moodledata por rsync incremental, com hard links entre gerações para não duplicar terabytes que nunca mudam.
  • Código versionado em Git, com config.php e credenciais fora do repositório, guardados em cofre.
  • Regra 3-2-1: três cópias, duas mídias, uma fora do site. Contra ransomware, acrescente uma cópia imutável — atacante com credencial válida apaga o backup antes de criptografar o servidor. Não por acaso, 85% dos ataques de ransomware ao setor educacional usaram técnicas baseadas em identidade, segundo a Sophos (226 líderes de TI em 17 países).
  • Criptografia em repouso no destino offsite. Backup de Moodle contém CPF, e-mail, nota e histórico: é dado pessoal sob a LGPD, inclusive de menores.

Restaurar é o único teste que vale

Backup do Moodle não testado é fé, não é processo. Se você descobre o dump corrompido no dia do desastre, o backup do Moodle nunca existiu — existiu a sensação de ter um.

Quatro armadilhas de restauração de backup do Moodle que já me morderam:

Versão de destino. A regra oficial é clara: restaure em um Moodle de versão igual ou mais nova que a de origem — backup de 5.1 num site 4.5 falha. Se você está planejando o salto de versão, vale ler antes o que muda no upgrade do AVA para a LTS atual. Incompatibilidade de plugin se descobre no staging, não na emergência.

Timeout em curso grande. Restaurar pela web um curso com muitos GB de anexos estoura o limite de tempo do PHP. Para isso existe a CLI: php admin/cli/restore_backup.php --file=/caminho/curso.mbz --categoryid=1.

Conflito de usuários entre sites. Ao restaurar em outra instalação, contas com mesmo username e e-mail diferente colidem. Defina a política de correspondência antes, não no meio do processo.

Restauração parcial mal compreendida. Recuperar conteúdo apagado por engano raramente exige restaurar o site inteiro — costuma ser caso de restauração seletiva de curso. O caso da UFOP, que analisei em exclusão de conteúdos e como salvar o backup, mostra a diferença entre limpeza planejada e perda acidental.

O ensaio mensal, em 40 minutos

Reserve uma janela mensal: derrube um ambiente de teste, restaure o dump mais recente, suba o moodledata, aponte o config.php para o banco restaurado, entre como administrador e confira três cursos, uma nota e um arquivo enviado. Cronometre. Esse número é o seu RTO real — não o do contrato.

Quando NÃO fazer backup do jeito que você está pensando

Nem toda cópia é útil, e algumas rotinas de backup do Moodle são ativamente ruins:

  • Não use .mbz como arquivo morto institucional. Ele não preserva o contexto do site e envelhece mal entre versões. Para histórico acadêmico, exporte relatórios e notas em formato aberto.
  • Não guarde backup no mesmo disco nem no mesmo servidor. Falha de disco leva os dois. Ransomware também.
  • Não agende backup completo em horário de pico. Troca risco de perda por certeza de lentidão.
  • Backup pré-upgrade não substitui staging. O snapshot permite voltar; não revela que o plugin de matrícula quebrou. Isso só a homologação mostra — foi o que discuti ao analisar os prazos e a rotina de backup do AVA da UnB.
  • Não retenha backup indefinidamente "por segurança". Cada geração antiga carrega dados pessoais que a LGPD manda eliminar quando a finalidade se encerra. Defina prazo de retenção por escrito.

Custos reais: o que enche o disco e a fatura

O backup do Moodle tem três centros de custo que só aparecem depois. O primeiro é o volume: backups automáticos gravados no moodledata são o motivo número um de disco cheio. O segundo é o tráfego de saída do storage offsite, que nunca entra na planilha e só dói no dia da restauração, quando você baixa tudo de uma vez. O terceiro é tempo de gente sênior: o ensaio mensal custa horas de quem sabe o que está fazendo.

Há também um custo de calendário. O Moodle 4.5 LTS saiu em 7 de outubro de 2024 e recebe correções de segurança até 4 de outubro de 2027; a próxima LTS, a 5.3, está prevista para 5 de outubro de 2026, segundo o calendário oficial de releases. A janela de migração vem aí, e nenhuma migração começa sem um backup do Moodle validado. Quem chega em outubro sem rotina testada adia o upgrade — e adiar LTS é acumular dívida de segurança.

Para comparar: o relatório da Sophos aponta 26% das instituições de ensino levando de um a três meses para se restabelecer após ransomware. Storage é barato perto disso.

Como a Agathas Web resolve isso

Na hospedagem Moodle gerenciada da Agathas Web, o backup do Moodle não é item de checklist: é rotina operada e verificada por nós, com SLA em contrato. O que está incluso:

  • Backup diário do banco + binlog incremental a cada 15 minutos, o que põe o RPO na casa dos minutos.
  • Storage offsite criptografado em AES-256, fora do servidor de produção.
  • RTO contratual de até 4 horas para as últimas 24 horas, via point-in-time recovery e snapshots.
  • Teste de restauração mensal, executado por nós e reportado no relatório executivo — porque backup que não restaura não é backup.
  • Rotina nativa de cursos calibrada: retenção, filtros e janela ajustados ao seu calendário acadêmico, não ao padrão de fábrica.
  • Upgrade de LTS em até 90 dias do release, com staging e rollback, mantendo o ambiente antigo por 30 dias.
  • Zero lock-in: se decidir sair, entregamos o backup completo em formato padrão.

Como se contrata: peça o diagnóstico gratuito da plataforma atual pelo WhatsApp ou pelo formulário da página. Em até três dias úteis devolvemos um parecer com gargalos, riscos de continuidade e proposta. Havendo migração, ela é assistida em até cinco dias úteis, com homologação em staging e cut-over em janela noturna ou de fim de semana. Contratos mensais, sem fidelidade longa.

Ressalva honesta: se você já tem sysadmin dedicado e rotina de disaster recovery testada, não precisa de nós para isso — basta conferir se o ensaio mensal acontece mesmo. O serviço faz sentido para quem roda EAD sem time de servidor, que é a maioria das instituições de médio porte no Brasil.

Conclusão: a rotina que salva a instituição

Backup do Moodle não é produto que se compra e esquece. É processo com quatro obrigações: copiar as três peças (banco, moodledata e código), definir RPO e RTO em números acordados com a diretoria, guardar cópia fora do servidor e restaurar de verdade, todo mês, com cronômetro. Quem faz as quatro transforma desastre em incidente. Quem faz duas descobre a diferença no pior dia possível.

Se não sabe qual desses quatro pontos está falhando hoje, peça o diagnóstico gratuito na página de hospedagem Moodle da Agathas Web. Respondemos em até três dias úteis com um parecer técnico — os mesmos três dias úteis que a ANPD te daria para explicar um incidente.

Perguntas frequentes

Com que frequência devo fazer backup do Moodle?

Depende do RPO que a instituição aceita, e essa é uma decisão de negócio, não de TI. Para um Moodle com aulas assíncronas e conteúdo estável, um dump diário do banco somado a uma cópia incremental do moodledata resolve. Para plataformas com avaliação online valendo nota, o diário não basta: é preciso binlog transacional, que reduz a perda potencial a minutos. A rotina nativa de backup de cursos deve rodar de duas a três vezes por semana, fora do horário de pico. Vale reforçar: frequência sem teste de restauração não protege ninguém. Melhor ter backup diário testado do que backup de hora em hora que nunca foi restaurado.

O backup automático de cursos substitui o backup do servidor?

Não. A rotina nativa gera arquivos .mbz por curso, e o .mbz não carrega as senhas dos usuários, as configurações globais do site, os plugins instalados, o tema, a autenticação nem as integrações com o sistema acadêmico. Se o servidor for perdido, restaurar cem .mbz em uma instalação nova significa reconstruir o ambiente inteiro à mão e obrigar todos os usuários a redefinir senha. O backup de curso é ferramenta pedagógica e de portabilidade — ótimo para clonar disciplina ou recuperar uma atividade apagada por engano. Recuperação de desastre exige as três peças: dump do banco, moodledata e o diretório de código com config.php e plugins nas versões exatas.

Posso restaurar um backup do Moodle em uma versão diferente?

Para cima, sim; para baixo, não. A documentação oficial orienta restaurar em um Moodle de versão igual ou mais nova que a de origem. Um backup gerado no 5.1 restaurado em um site 4.5 falha ou corrompe dados, porque a estrutura do banco mudou. O caminho seguro é atualizar o ambiente de destino primeiro e só então restaurar. Atenção também aos plugins de terceiros: mesmo com o core compatível, um plugin abandonado pode não existir na versão de destino, e a restauração completa depois de um desastre não é o momento de descobrir isso. Teste o par backup/versão em staging antes de qualquer janela de upgrade.

Por que o disco enche com os backups automáticos do Moodle?

Porque o destino padrão dos backups automáticos é o próprio moodledata, no mesmo disco do site, e as três configurações de retenção não se validam entre si. São elas: backup_auto_max_kept (máximo de backups por curso), backup_auto_delete_days (apaga o que for mais antigo que X dias) e backup_auto_min_kept (piso mínimo que nunca é removido). Se o piso mínimo for maior que a quantidade real de backups existentes por curso, a limpeza nunca roda, mesmo com as outras duas configuradas. A correção tem dois passos: apontar o destino para outro disco ou máquina, como a documentação recomenda, e refazer a aritmética da retenção contra a contagem real de arquivos por curso.

Backup do Moodle guarda dado pessoal? O que a LGPD exige?

Guarda, e muito: nome, CPF, e-mail, notas, frequência e histórico de acesso — frequentemente de menores de idade, o que atrai o artigo 14 da LGPD. A lei não exige backup com essas palavras, mas exige medidas técnicas capazes de proteger os dados contra perda e destruição, o que na prática significa conseguir restaurar. Duas obrigações práticas: criptografar o backup em repouso no destino externo e definir por escrito um prazo de retenção, eliminando gerações antigas quando a finalidade se encerra. Guardar backup indefinidamente não é prudência, é passivo. Em caso de incidente, a Resolução CD/ANPD nº 15/2024 dá três dias úteis para comunicar a ANPD.