Il problema di cron è che, quando fallisce, non succede nulla. Nessuna pagina va offline, nessun errore viene mostrato; il backup semplicemente non c'è quando ti serve.
Il pattern heartbeat
Assegna a ogni job un URL univoco. Il job lo chiama in caso di successo. Un monitor si aspetta la chiamata ogni N ore; se è in ritardo, ricevi un avviso.
Cron
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://hb.uptimepush.com/p/TOKENTimer systemd
Aggiungi ExecStartPost=/usr/bin/curl -fsS https://hb.uptimepush.com/p/TOKEN alla unit del servizio.
CronJob Kubernetes
Aggiungi la chiamata curl al comando del container con && in modo che venga eseguita solo in caso di successo.
GitHub Actions
Aggiungi uno step finale che chiama l'URL con curl, con il token salvato come secret.
Periodi di tolleranza
Imposta un periodo di tolleranza leggermente più lungo della durata normale massima del job, così una notte lenta non ti sveglia con un avviso.