Sur Yunohost, il est possible de faire des sauvegardes manuelles quand on le souhaite, mais rien n'existe directement pour automatiser ces sauvegardes. Je glisse sur l'utilité des sauvegardes, si vous êtes là, vous êtes déjà convaincu ! 😉
Plutôt que d'installer un service comme Borg, Archivist ou Restic, pourquoi ne pas utiliser ce qui existe déjà ? En effet, si dans certains cas Borg est très bien (faire des sauvegardes sur un autre serveur distant, ou sur un disque externe), lorsqu'on veut simplement sauvegarder un service, ou même tout le serveur, mais en local, je ne suis pas partisan d'installer un service tiers pour faire quelque chose que Yunohost sait déjà faire.
Les sauvegardes natives de Yunohost
Dans l'interface administrateur ou en ligne de commande, il est déjà possible de faire des sauvegardes, de les retrouver et de les restaurer.
C'est une fonctionnalité superbe ! Son seul défaut est qu'on ne peut pas programmer ou automatiser des sauvegardes (en tout cas pas pour l'instant).
En ligne de commandes, on peut également faire des sauvegardes et les gérer, de cette manière :
Et bien ça tombe bien, maintenant qu'on connait ces commandes, on va pouvoir écrire un petit script pour les lancer automatiquement !
Script d'automatisation des sauvegardes Yunohost
La première étape est de créer le code qui va faire la sauvegarde pour nous grâce aux commandes de Yunohost. Il va faire la sauvegarde de ce qu'on veut, puis supprimer les vieilles sauvegardes, histoire de ne pas saturer notre espace disque !
il existe plusieurs manières de faire ce code, je vous présente la mienne, mais en voici une autre.
Vous pouvez évidemment choisir votre propre préfixe.
ensuite, on fait un point sur les dates :
Cette partie permet de créer les variables dont on va avoir besoin ensuite. Il nous faut maintenant créer la sauvegarde : la commande yunohost backup create
prend un certain nombre d'arguments. La documentation de yunohost est assez complète à ce sujet.
Ici, je choisis de sauvegarder le system, et seulement quelques apps (si on veut toutes les sauvegarder, ne rien mettre après --apps
)
une fois qu'on a créé la sauvegarde, on relit les anciennces pour supprimer celles qui ne vont plus nous servir. D'abord on se déplace dans le dossier correspondant :
Puis on filtre toutes les sauvegardes présentes dans le dossier, pour ne garder que celles qui correspondent à notre préfixe, et qui ne sont pas liées aux dates mises en variable (today, yesterday, …), grâce à grep -v qui inverse la sélection. On supprime ce qui reste dans la liste obtenue.
En conclusion, le contenu du fichier au complet est ceci :
Une fois qu'on a créé ce fichier, pour qu'il puisse être exécuté par cron, il faut en changer les droits d'accès :
chmod u+x script-sauvegarde-automatique.sh
Ceci est très important, si on ne le fait pas cron ne pourra pas exécuter le code !
Création d'une tâche cron
On veut que le script se lance tous les jours, à 2h du matin, par exemple. Debian nous propose un superbe outil pour nous permettre de faire ça, ce sont les tâches cron.
Dans /etc/cron.d/
, on va créer un nouveau fichier, sauvegarde-automatique
(sans extension de fichier).
pour expliquer un peu cette ligne, c'est une tâche cron classique avec la définition de quand on veut faire quelque chose au début, quel utilisateur est sollicité, quel fichier est lu, puis les >> permettent de stocker le retour de la commande dans le fichier retour.log, et enfin 2>&1 permet de retourner, dans ce même fichier, les erreurs s'il y en a.
Si le fichier retour.log n'existe pas, il sera créé.
C'est parti pour l'automatisation de vos sauvegardes Yunohost !
Et voilà c'est terminé !
Il ne reste plus qu'à attendre que cron exécute votre commande, et à regarder dans le fichier retour.log. le déroulé des opérations, ou à regarder la liste des sauvegardes, depuis l'interface web ou depuis la commande yunohost backup list
.