{{indexmenu_n>30}}
# Rotation des sauvegardes
Picasoft réalise régulièrement des backups de ses bases de données. Le service qui s'occupe des backups ne s'occupe pas de supprimer les backups trop anciens. C'est le but de ce service.
Il est flexible et se configure via des fichiers JSON.
## Implémentation
Pour éviter de saturer la mémoire avec de vieilles sauvegardes inutiles, un système de rotation a été mis en place.
Les fichiers pour déployer le conteneur de rotation sont [sur son dépôt](https://gitlab.utc.fr/picasoft/projets/services/db-backup-rotation).
Ce système est très simple ; il est basé sur la bibliothèque Python [rotate-backups](https://pypi.org/project/rotate-backups/), qui fait tout pour nous. Il suffit de lui préciser le nombre de backups à garder. En général, on précise quatre nombres :
* Combien de backups sur la dernière journée, puis
* Sur la dernière semaine, puis
* Sur le dernier mois, puis
* Sur la dernière année
Le fichier de configuration versionné sur le dépôt recense les informations sur les différents services mis en place sur les machines et les informations nécessaires pour lancer les rotations sur ces services.
\\
\\
Ce fichier **est** le fichier utilisé **en production**. Il est unique et recense les services de toutes les machines. Si les backups sont effectués sur une autre machine virtuelle, alors le dossier spécifié dans la configuration est simplement ignoré.
\\
\\
Il ne doit pas être modifié sur les machines sans être synchronisé avec le dépôt Git.
Sachant que sur la dernière année, on gardera un de ceux qui ont été gardés pour chaque dernier mois, etc.
## Test du fonctionnement
Le script `fake_backups.py` présent sur le dépôt permet de générer un nombre arbitraire de "faux backups", à une heure d'intervalle.
Le lancement du script de rotation permet alors de vérifier que celle-ci se fait bien correctement.
Un test fonctionnel automatisé pourrait exploiter ce script pour éviter les erreurs/oublis.