Sommaire


yunohost téléversement phpmyadmin
Automatiser les sauvegardes Yunohost
Catégories associées :

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).

Tableau d'administration des sauvegardes de Yunohost

En ligne de commandes, on peut également faire des sauvegardes et les gérer, de cette manière :

# Commande pour tout sauvegarder :
sudo yunohost backup create

# Pour sauvegarder le système uniquement (paramètres, utilisateurs, ...) :
sudo yunohost backup create --system

# Pour sauvegarder les applications uniquement (toutes) :
sudo yunohost backup create --apps

# Pour ne sauvegarder que les applis nommées :
yunohost backup create --apps nextcloud calibre
Commandes de sauvegarde Yunohost

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.

#!/bin/bash

# Crée des sauvegardes et supprime les anciennes sauvegardes
# Les sauvegardes sont créées avec le prefix suivant :
PREFIX="sauvegarde-automatique_"

Vous pouvez évidemment choisir votre propre préfixe.

ensuite, on fait un point sur les dates :

# Toutes les sauvegardes avec le préfixe précédente sont supprimées sauf les dates suivantes :
TODAY=`date ' %Y-%m-%d'`
YESTERDAY=`date -d "yesterday" ' %Y-%m-%d'`
DAY_BEFORE_YESTERDAY=`date -d "2 days ago" ' %Y-%m-%d'`
LAST_SUNDAY=`date -d "last Sunday" ' %Y-%m-%d'`
BEGINNING_OF_MONTH=`date ' %Y-%m-01'`
BEGINNING_OF_LAST_MONTH=`date -d "last month" ' %Y-%m-01'`

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)

yunohost backup create --system --apps wordpress roundcube -n $PREFIX$TODAY

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 :

cd /home/yunohost.backup/archives

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.

rm `ls | grep $PREFIX | grep -v "$TODAY\|$YESTERDAY\|$DAY_BEFORE_YESTERDAY\|$LAST_SUNDAY\|$BEGINNING_OF_MONTH\|$BEGINNING_OF_LAST_MONTH"`
yunohost backup list

En conclusion, le contenu du fichier au complet est ceci :

#!/bin/bash

# Crée des sauvegardes et supprime les anciennes sauvegardes
# Les sauvegardes sont créées avec le prefix suivant :
PREFIX="sauvegarde-automatique_"
# Toutes les sauvegardes avec le préfixe précédente sont supprimées sauf les dates suivantes :
TODAY=`date ' %Y-%m-%d'`
YESTERDAY=`date -d "yesterday" ' %Y-%m-%d'`
DAY_BEFORE_YESTERDAY=`date -d "2 days ago" ' %Y-%m-%d'`
LAST_SUNDAY=`date -d "last Sunday" ' %Y-%m-%d'`
BEGINNING_OF_MONTH=`date ' %Y-%m-01'`
BEGINNING_OF_LAST_MONTH=`date -d "last month" ' %Y-%m-01'`

yunohost backup create --system --apps wordpress__2 gitlab kanboard onlyoffice redirect roundcube roundcube__3 -n $PREFIX$TODAY
cd /home/yunohost.backup/archives
rm `ls | grep $PREFIX | grep -v "$TODAY\|$YESTERDAY\|$DAY_BEFORE_YESTERDAY\|$LAST_SUNDAY\|$BEGINNING_OF_MONTH\|$BEGINNING_OF_LAST_MONTH"`
yunohost backup list

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).

# Lancement du script de sauvegarde automatique tous les jours à 2h du matin :

00 02 * * * root /etc/cron.d/script-sauvegarde-automatique.sh >> /etc/cron.d/retour.log 2>&1

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.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.