Agendamento de Backups

Este guia mostra como configurar agendamento de backups.

Formato Cron

BackupAlly usa formato cron padrão.

5 Campos (Unix tradicional)

minuto hora dia mês dia_semana

6 Campos (com segundos)

segundo minuto hora dia mês dia_semana

Valores

Campo Valores
segundo 0-59
minuto 0-59
hora 0-23
dia 1-31
mês 1-12
dia_semana 1-7 (1=Segunda, 7=Domingo)

Dias da Semana

BackupAlly usa a convenção onde Segunda = 1 e Domingo = 7.

Dia Número
Segunda 1
Terça 2
Quarta 3
Quinta 4
Sexta 5
Sábado 6
Domingo 7

Exemplos de Schedule

Diário

schedule = "0 2 * * *"    # Todo dia às 2:00
schedule = "30 3 * * *"   # Todo dia às 3:30

Semanal

schedule = "0 3 * * 7"    # Domingo às 3:00
schedule = "0 2 * * 1"    # Segunda às 2:00

Dias Úteis

schedule = "0 2 * * 1-5"  # Segunda a sexta às 2:00

Fim de Semana

schedule = "0 3 * * 6,7"  # Sábado e domingo às 3:00

A Cada N Horas

schedule = "0 */6 * * *"  # A cada 6 horas
schedule = "0 */4 * * *"  # A cada 4 horas
schedule = "0 */2 * * *"  # A cada 2 horas

A Cada N Minutos

schedule = "*/30 * * * *"  # A cada 30 minutos
schedule = "*/15 * * * *"  # A cada 15 minutos

Horários Específicos

schedule = "0 9,13,18 * * *"  # Às 9:00, 13:00 e 18:00

Mensal

schedule = "0 3 1 * *"    # Primeiro dia do mês às 3:00
schedule = "0 3 15 * *"   # Dia 15 de cada mês às 3:00

Último Domingo do Mês

schedule = "0 3 25-31 * 7"  # Domingo entre dias 25-31

Condições de Execução

Além do schedule, você pode definir condições.

Sintaxe

[condition]
when = "expressão"

Funções Disponíveis

Função Retorno Descrição
loadavg() float Média de carga (1 min)
diskfree('path') bytes Espaço livre
time() string Hora atual (HH:MM)
dayofweek() int Dia da semana (1-7)

Operadores

Operador Significado
< Menor que
> Maior que
<= Menor ou igual
>= Maior ou igual
== Igual
!= Diferente
&& E lógico
|| Ou lógico

Exemplos

# Executar se carga < 2.0
[condition]
when = "loadavg() < 2.0"

# Executar se espaço livre > 100GB
[condition]
when = "diskfree('/backup') > 100GB"

# Combinação
[condition]
when = "loadavg() < 2.0 && diskfree('/backup') > 50GB"

# Apenas em dias úteis (redundante se já no cron)
[condition]
when = "dayofweek() >= 1 && dayofweek() <= 5"

Janelas de Execução

Limite o backup a um período específico.

[window]
start = "00:00"
end = "06:00"

Se o schedule cair fora da janela, o backup não executa.

Exemplos

# Janela noturna
[window]
start = "22:00"
end = "06:00"

# Janela de almoço
[window]
start = "12:00"
end = "14:00"

# Horário comercial
[window]
start = "08:00"
end = "18:00"

Prioridade

Controle a ordem de execução quando há múltiplas tasks.

[task]
priority = 90  # 0-100, maior = mais prioritário

Sugestões de Prioridade

Tipo Prioridade Sugerida
Crítico (produção) 90-100
Importante 70-89
Normal 40-69
Baixa prioridade 10-39
Background 1-9

Concorrência

Configure quantos backups podem executar simultaneamente.

# config.toml
[global]
max_concurrent_backups = 2

Tasks aguardam slot disponível se o limite for atingido.

Exemplos Completos

Backup Crítico

[task]
id = "mysql-prod"
priority = 95
schedule = "0 2 * * *"

[condition]
when = "loadavg() < 3.0"

[window]
start = "00:00"
end = "06:00"

Backup de Baixa Prioridade

[task]
id = "logs-archive"
priority = 20
schedule = "0 4 * * *"

[condition]
when = "loadavg() < 1.0 && diskfree('/backup') > 200GB"

Backup Frequente

[task]
id = "transactions"
priority = 80
schedule = "*/15 * * * *"  # A cada 15 minutos

[condition]
when = "loadavg() < 4.0"

Iniciar o Scheduler

sudo systemctl enable backupally-scheduler
sudo systemctl start backupally-scheduler

Verificar Próximas Execuções

backupally task list

Saída mostra próxima execução de cada task.

Troubleshooting

Backup Não Executou

Verifique:

  1. Task está habilitada (enabled = true)
  2. Scheduler está rodando (systemctl status backupally-scheduler)
  3. Condição foi atendida
  4. Estava dentro da janela

Verificar Logs

sudo journalctl -u backupally-scheduler -f
By Borlot.com.br on 11/02/2026