Planifier ses mises à jour avec crontab

1. Planifier la mise à jour de sa distribution

Crontab est un outil de planification de tâches qui me sert à mettre ma distribution à jour tous les matins à 09:00. La mise à jour de la distribution est une tâche qui se déroule au niveau du système. C’est pourquoi je me connecte en root. Puis, j’ouvre le fichier /etc/crontab en utilisant la commande crontab -e . Ensuite, je rajoute la ligne suivante :

00 9 * * * root /home/benoit/.config/system_update/system_update.sh

N’oubliez pas de fermer votre éditeur de texte. Si celui-ci reste ouvert, la tâche cron ne s’éxécutera pas. Vous noterez que le nom de l’utilisateur est root. Crontab ne vous demandera pas de mot de passe. Cela signifie que le processus est verrouillé. Cette ligne lance le script ci-dessous. Il met à jour la distribution et retourne les résultats obtenus dans les scripts correspondants. Vous noterez que j’utilise l’option suivante :

--noconfirm

Elle correspond à -y chez Ubuntu et Mageia. Elle permet de mettre à jour les paquets sans avoir besoin de demander l’autorisation à l’utilisateur. Sans cette option, il ne s’agit plus d’un processus automatique puisque le script se met en pause et attend la réponse positive ou négative de l’utilisateur! system_update.sh s’occupe également de nettoyer le système, mais dans ce domaine, vous n’êtes pas obligé(e) d’être aussi radical(e) que moi! C’est simple, mais ça fonctionne, et il n’y a aucun risque d’oublier de mettre à jour sa distribution.

2. Planifier les mises à jour de mon dépôt sur Gitlab

Dans le domaine de l’infonuaqique, je n’ai jamais réussi à trouver mon bonheur. J’ai essayé Nextcloud, Pcloud et d’autres encore, mais aucun ne m’a convaincu. Je veux un outil simple. Je n’ai pas besoin de tout un tas de fonctionnalités aussi inutiles les unes que les autres. Mon cahier des charges tient en deux lignes :

Mettre en œuvre un processus de sauvegarde automatique de type versioning, me permettant d’accéder à mes fichiers personnels, quel que soit l’endroit où je me trouve.

Encore faut-il bien sûr que cet endroit soit connecté au réseau! Il me semble avoir trouvé une solution à la fois simple et efficace. J’ai créé trois dépôts git privés qui sont Documents, Images et Musique. Ensuite, j’ai rédigé un script bash nommé git_update.sh et qui ne présente aucune difficulté puisqu’il s’agit des commandes Git à lancer pour pouvoir pousser les modifications dans le dépôt. Il peut s’agir d’ajouts ou de suppressions. Voici à quoi il ressemble :

Important !

Pensez à rajouter ces lignes à la fin de chaque fichier .git/config :

[user]
    name = "Prénom Nom"
    email = "vous@email.com"

Automatisation du processus

Cette fois-ci, j’ai choisi de rajouter le script dans le fichier /etc/cron.d/0hourly. Comme son nom l’indique, il est en charge d’exécuter des commandes toutes les heures. voici son contenu.

# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
03 * * * * benoit /home/benoit/.config/system_update/git_update.sh

Conclusion

C’est ainsi que je procède pour avoir mon propre infonuage toujours à jour et accessible partout où une connexion au réseau est disponible.