Le Wiki de Tchack

Guides et documentation sur le serveur tchack.xyz

Outils pour utilisateurs

Outils du site


Panneau latéral

adminsys:sauvegardes

Sauvegardes

Des sauvegardes peuvent être effectuées manuellement ou automatiquement avec l'outil de backups de Yunohost yunohost backup create. Celui-ci crée une archive datée dans le répertoire /home/yunohost.backup/archives. Parallèlement, une copie complète du système du Raspberry Pi est sauvegardée à distance avec rsync quotidiennement, via un script dédié. Enfin, une automatisation hebdomadaire avec Borg est en place.

Les éléments du système hors Yunohost, tels l'appli RPi-Monitor, les clés SSH, les comptes utilisateurs du serveur, les journaux d'installation… ne sont pas sauvegardés par le service de Yunohost. Ils sont donc plus compliqués à restaurer dans le plan de reprise d'activité actuel. NB: La procédure “distante” a été dupliquée avec succès lors du déploiement du VPS.

:!: Pour des raisons de performance, les serveurs ne sont pas chiffrés, et seules les sauvegardes Borg le sont.

:!: L'automatisation est un point clé de la survie et de la qualité du serveur : le P.R.A. doit être testé régulièrement ( FIXME fonctionnement partiel au 18/12/2017).

Automatisation locale

Un script est appelé chaque dimanche par cron : il crée une archive de sauvegarde avec l'outil de yunohost et la recopie dans un repository chiffré par borg. Les réglages et les applications sont ainsi sauvegardées dans deux archives distinctes, plus une pour Nextcloud (qui nécessite un réglage distinct, pour sauvegarder les réglages sans la data, trop lourde).

Les archives sont préfixées “auto-”, et automatiquement supprimées au fur et à mesure. Le script conserve une copie à J-7 et à J-30. Le repository borg garde une copie par mois, sans limite de temps, avec la commande prune (décompte des sauvegardes seulement si fichier présent !)

Puis le script enchaine avec la copie du repo vers le NAS, via rsync.

Automatisation distante

L'automatisation des sauvegardes distantes vers le NAS de Hervé est en place selon le protocole suivant :

  • Il faut tout d'abord pouvoir s'y connecter sans mot de passe : pour cela on place une clé SSH sans phrase de passe (dans le dossier /home/pi/.ssh) dont la clé publique est envoyée au NAS avec ssh-copy-id, pour le compte “admin@NASHervé”.
  • Pour pouvoir lire l'ensemble des fichiers à sauvegarder sur le système, le script de sauvegarde sera lancée par root. Par conséquent, il faut copier les clés SSH de l'utilisateur 'pi' vers le dossier /root/.ssh pour se connecter au NAS sans mot de passe.

Base de données

La restauration de Nextcloud est lourde en raison d'une BDD jointe aux fichiers. La procédure est décrite dans la documentation Nextcloud. Et d'une manière générale pour Yunohost, les bases de données doivent être sauvegardées en plus des fichiers, cf ce post.

On réalise donc, avant la sauvegarde quotidienne, une copie de l'ensemble des tables de la base de données, en utilisant la commande mysqldump et l'authentification selon ce post. Le mot de passe maître de MySQL est copié depuis /etc/yunohost/mysql.

Rsync quotidien

Pour le RPi uniquement (qui contient des services critiques), une sauvegarde brute et non-chiffrée est faite quotidiennement en push, avec la commande suivante :

rsync -azPvH –exclude-from=/usr/local/src/RsyncExclusions.txt –delete-during –bwlimit=2.1m / admin@NASHervé:/share/homes/Elias/Rsync » /var/log/rsyncSaveHerve/rsync.log

Options : -a pour archiver, -z pour compresser, -P pour avoir des barres de chargement et les transferts partiels, -v pour être verbeux, -H pour préserver les liens durs, –bwlimit pour limiter l'upload et ne pas saturer la connexion.

  • Le fichier RsyncExclusion.txt liste les dossiers inutiles à sauvegarder, tels /tmp* ou /proc* ainsi que les repository borg, déjà copiés au rythme hebdomadaire.

Monitoring

L'historique des transferts est loggué dans un fichier dédié, avec un timestamp initial et final par la commande date » /var/log/rsyncSaveHerve/rsync.log. L'historique du fichier de log est géré par le service UNIX logrotate. Enfin, on automatise l'ensemble du script en l'appelant via le daemon CRON du root : sudo crontab -e et on ajoute la ligne suivante 30 3 * * * /usr/local/src/Rsync-SaveYH.sh.

8-) Pour plus de confort, un SMS est envoyé à l'administrateur en fin de sauvegarde, avec le temps d'opération, via l'API du service SMS-FreeMobile.

:!: L'adresse IPv4 du NASHervé peut changer, mais son URL fixe est fournie par le service Qnap. Ce service peut limiter le débit des transferts de longue durée. Une vigilance est à mener sur ce point, avec l'utilisation éventuelle du service https://api.ident.me et d'un script coté NAS pour utiliser l'IP directement.

Documentation

adminsys/sauvegardes.txt · Dernière modification: 2019/07/08 20:30 par jaxom