#!/bin/sh # Le mode de panne reel n'est pas "le script plante", c'est "le script ne tourne # plus depuis trois semaines et personne ne l'a vu". Un OnFailure n'attrape pas # ca : il faut regarder l'age de la derniere sauvegarde, pas un code de sortie. set -eu MAX_AGE_HOURS=${MAX_AGE_HOURS:-48} DEST=${BACKUP_DEST:?export BACKUP_DEST} is_remote() { case "$1" in /*|./*|../*) return 1 ;; *:*) return 0 ;; *) return 1 ;; esac } if is_remote "$DEST"; then LATEST=$(rclone lsl "$DEST" | sort -k2 | tail -1) else LATEST=$(ls -1t "$DEST" 2>/dev/null | head -1) fi if [ -z "${LATEST:-}" ]; then echo "Aucune sauvegarde dans $DEST" >&2 exit 1 fi if is_remote "$DEST"; then AGE_S=$(( $(date +%s) - $(date -d "$(echo "$LATEST" | awk '{print $2" "$3}')" +%s) )) else AGE_S=$(( $(date +%s) - $(stat -c %Y "$DEST/$LATEST") )) fi AGE_H=$(( AGE_S / 3600 )) if [ "$AGE_H" -gt "$MAX_AGE_HOURS" ]; then echo "Derniere sauvegarde vieille de ${AGE_H}h (seuil ${MAX_AGE_HOURS}h) : $LATEST" >&2 exit 1 fi echo "OK — derniere sauvegarde il y a ${AGE_H}h"