Como corrigir o agendamento de backups que não funciona no UpdraftPlus
O que é o agendamento de backup do UpdraftPlus que não funciona?
O agendamento de backup do UpdraftPlus que não funciona é a falha em que o intervalo definido em Configurações, UpdraftPlus, nas opções “Agendamento de backup de arquivos” e “Agendamento de backup de banco de dados”, não é respeitado: o backup roda atrasado, em horário diferente do esperado ou com frequência maior que a escolhida. O UpdraftPlus não controla o relógio sozinho. Ele apenas registra os eventos updraft_backup e updraft_backup_database no WP-Cron, o agendador interno do WordPress, e grava o intervalo na opção updraft_interval. Quem decide a hora exata de executar é o WP-Cron, que só é verificado quando uma página do site é carregada e que usa o fuso horário definido em Configurações, Geral. Por isso o painel mostra “Próximo backup agendado” com uma hora que não corresponde ao intervalo que você selecionou, ou o backup só dispara quando aparece a primeira visita do dia.
Como identificar
- O painel do UpdraftPlus mostra em “Next scheduled backups” (Próximos backups agendados) um horário que não corresponde ao intervalo escolhido, por exemplo backup marcado para daqui a 19 horas quando você pediu a cada 12 horas.
- O backup escolhido para 3h da manhã sempre roda perto do meio-dia ou à tarde, no horário em que chega o primeiro visitante do dia.
- Em “Existing backups” os backups aparecem com intervalos irregulares entre eles, às vezes dois no mesmo dia e às vezes nenhum, em vez do ritmo fixo configurado.
- O comando wp cron event list mostra o evento updraft_backup repetido em duas linhas ou com a coluna de próxima execução em horário que não bate com o intervalo salvo em updraft_interval.
- O horário registrado no log do UpdraftPlus está deslocado em uma quantidade fixa de horas em relação ao relógio local, sinal de fuso horário errado no WordPress.
Como prevenir
- Defina o fuso horário em Configurações, Geral, para a sua cidade logo na instalação, antes de configurar qualquer intervalo de backup no UpdraftPlus
- Use um cron real do servidor a cada 5 minutos em vez de confiar no disparo por visita, para o intervalo de backup ser respeitado mesmo em dias de baixo tráfego
- Sempre que mudar o intervalo no UpdraftPlus, salve as configurações e confira em wp cron event list se existe um único evento updraft_backup com o novo horário
- Ative o relatório por e-mail do UpdraftPlus em Email nas configurações para receber o aviso de cada ciclo e perceber rápido quando a frequência sai do esperado
Causa
- O WP-Cron é verificado só quando alguém carrega uma página, então em site de baixo tráfego o evento updraft_backup é disparado na próxima visita disponível e não no horário do intervalo configurado.
- O fuso horário em Configurações, Geral, está em UTC ou numa cidade errada, então o UpdraftPlus calcula o próximo backup somando o intervalo a um relógio diferente do local e a hora mostrada fica deslocada.
- Existem dois eventos updraft_backup registrados no WP-Cron, herança de uma reativação do plugin ou de uma restauração de banco, e os dois disparam em horários próprios competindo entre si.
- A constante DISABLE_WP_CRON está como true no wp-config.php, mas o cron real do servidor foi criado com um intervalo maior que o do backup, por exemplo de hora em hora, então o evento só roda no próximo tique do cron e nunca na hora exata.
- Um plugin de cache de página inteira serve a home a partir do cache e o WordPress não roda o disparo do WP-Cron naquela visita, empurrando o backup agendado para mais tarde.
- A opção updraft_interval foi alterada mas o evento antigo no WP-Cron não foi reagendado, então o UpdraftPlus continua usando a frequência anterior gravada no agendamento.
Como resolver
- Confira o fuso horário do WordPress: abra Configurações, Geral, e ajuste o fuso para a sua cidade, não para um valor UTC fixo, para o UpdraftPlus calcular o próximo backup a partir do relógio local correto. Confirme a hora atual do servidor pela linha de comando.
wp option get timezone_string wp eval 'echo current_time("mysql");' - Verifique se há agendamento duplicado: liste os eventos do WP-Cron e procure por updraft_backup repetido. Se aparecer em mais de uma linha, há agendamento duplicado competindo, e os dois disparam em horários diferentes.
wp cron event list | grep updraft - Limpe o evento e deixe o UpdraftPlus reagendar: remova os eventos de backup do agendador, depois entre em Configurações, UpdraftPlus, salve novamente o intervalo desejado e o plugin grava um único evento limpo, alinhado à opção updraft_interval.
wp cron event delete updraft_backup wp cron event delete updraft_backup_database - Desative o WP-Cron interno: edite o wp-config.php, antes da linha que pede para parar de editar, e desligue o disparo por visita, que é o que faz o backup só rodar quando chega tráfego. Sozinha, esta linha para o agendador, então o passo seguinte é obrigatório.
define( 'DISABLE_WP_CRON', true ); - Crie um cron real com intervalo menor que o do backup: no painel da hospedagem, em Cron Jobs, ou via crontab, agende uma chamada ao wp-cron.php a cada 5 minutos. O intervalo do cron precisa ser menor que o intervalo do backup para o horário marcado ser respeitado com folga.
*/5 * * * * cd /home/usuário/public_html && php wp-cron.php >/dev/null 2>&1 - Confirme o próximo horário agendado: depois de salvar tudo, rode o evento manualmente uma vez e liste de novo o agendamento para conferir que o próximo backup agora cai dentro do intervalo configurado e no fuso correto.
wp cron event run updraft_backup wp cron event list | grep updraft
// wp-cli: diagnostica o agendamento real do UpdraftPlus vs o intervalo salvo
// Rode com: wp eval-file diagnostico-agendamento.php
$intervalo = get_option( 'updraft_interval', 'manual' );
$proximo = wp_next_scheduled( 'updraft_backup' );
if ( ! $proximo ) {
WP_CLI::warning( 'Nenhum evento updraft_backup agendado. Salve o intervalo nas configuracoes.' );
} else {
$hora = wp_date( 'd/m/Y H:i', $proximo ); // usa o fuso do WordPress
WP_CLI::log( "Intervalo salvo: {$intervalo}" );
WP_CLI::log( "Proximo backup: {$hora}" );
if ( ( $proximo - time() ) < 0 ) {
WP_CLI::warning( 'Horario no passado: o WP-Cron nao esta disparando o backup.' );
}
}














