Exécuter périodiquement un script uniquement si une connexion Internet est active

Le problème exposé dans ce sujet a été résolu.

Bonjour à toutes et à tous,

Suite a un ardent combat avec mon serveur Nextcloud, j’ai réussi à récupérer mes données sans trop de pertes, mais j’y ai laissé du temps et de l’énergie. J’ai donc décidé de renforcer mes mécanismes de sauvegarde.

À ce jour, mes documents importants sont synchronisés via Nextcloud et j’effectue des copies sur un support externe manuellement de temps en temps. Étant prof, je produis beaucoup de documents (parfois une dizaine par semaine), j’ai donc besoin d’un peu plus de régularité dans mes sauvegardes. Il s’avère que je dispose d’un raspberry auquel je peux me connecter en SSH sur le réseau local de mon domicile. J’ai un script bash (nommons-le backup.sh pour l’exemple) qui crée une archive de l’ensemble des documents à copier, et l’envoie sur le raspberry en SSH. Je suis sous Kubuntu 22.04.

Mon besoin est le suivant : je voudrais que, de façon hebdomadaire, backup.sh s’exécute automatiquement. Avec anacron, je sais le faire. Seulement, j’ai pour habitude d’éteindre ma box Internet quand je ne suis pas chez moi et pendant la nuit. Ce qui fait que la connexion SSH échouera forcément.

Il faudrait donc que, tous les 7 jours (avec anacron), on vérifie la connexion réseau. Si elle est active, envoyer les documents vers le raspberry avec backup.sh et recommencer dans 7 jours. Si elle ne l’est pas, réexécuter backup.sh par exemple dans 3 h. Mes connaissances avec Unix sont sommaires et un peu rouillées donc je n’ai rien trouvé de probant [lors de mes recherches](rerun script after kill delay).

Avez-vous connaissances de documentation ou d’obscures commandes cachées dans les entrailles du système qui sauraient faire ça ? :D Merci beaucoup !

Si tu utilises une distribution avec systemd, tu peux normalement utiliser un timer (l’équivalent d’un cron pour systemd) et lui spécifier une dépendance au réseau. Cf ceci par exemple.

À voir si la limitation (la dépendance se fait sur une connexion UP, pas sur une connexion qui laisse passer des paquets en réalité) te va.

Tu peux aussi lancer le script toutes les 3h avec ton cron et stocker ton lastSuccessful backup pour savoir si oui ou non tu es bon pour faire un back-up.

Comme ca si tu as internet et que le dernier backup date d’il y a moins de 7 jours ca fait rien.

AmarOk

En effet, dit comme ça, ça semble évident. Je pense que je vais opter pour cette solution.

J’en profite pour rajouter que tu ferais sans doute mieux d’utiliser une solution spécialisée de sauvegarde, comme restic ou borg

Moté

Je ne connaissais pas ces outils, je garde sous le coude ! Ça n’a pas l’air très compliqué, mais je n’ai pas trop le temps de creuser dans cette direction. Je note dans ma liste-de-trucs-à-améliorer, mais à court terme je vais quand même me contenter de ma solution bricolée à la main.

Bonsoir tout le monde,

Désolé pour le déterrage, mais j’ai du nouveau et je me dis que cela pourra peut-être servir pour à d’autres personnes à l’avenir. Suite à la recommandation de @Moté, j’ai eu le temps de regarder du côté de borg et j’ai fini par déployer cette solution sur ma machine, avec des résultats qui semblent probants.

J’ai essentiellement utilisé trois références pour me documenter et conduire les tests :

Avec anacron, cela s’automatise très bien. Je passe donc le sujet (définitivement) en résolu. Merci à tout le monde pour vos conseils et contributions. :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte