Le problème avec cron, c'est que rien ne se passe en cas d'échec. Aucune page ne tombe, aucune erreur ne s'affiche ; la sauvegarde n'est simplement pas là quand vous en avez besoin.
Le principe du heartbeat
Attribuez à chaque tâche une URL unique. La tâche l'appelle en cas de succès. Un moniteur attend l'appel toutes les N heures ; s'il est en retard, vous recevez une alerte.
Cron
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://hb.uptimepush.com/p/TOKENTimers systemd
Ajoutez ExecStartPost=/usr/bin/curl -fsS https://hb.uptimepush.com/p/TOKEN à l'unité de service.
CronJob Kubernetes
Ajoutez l'appel curl à la commande du conteneur avec && afin qu'il ne s'exécute qu'en cas de succès.
GitHub Actions
Ajoutez une dernière étape qui appelle l'URL avec curl, le token étant stocké comme secret.
Délais de grâce
Définissez un délai de grâce légèrement supérieur à la plus longue exécution normale de la tâche, pour qu'une nuit un peu lente ne vous réveille pas.