# Backup avec borg

Les backups sont gérées avec [Borg](https://borgbackup.readthedocs.io/en/stable/index.html) et [Borgmatic](https://torsion.org/borgmatic/) et sont exécutées tous les jours à 5:00, et gardés pendant une période de 10 jours.

Les éléments suivants sont inclus dans la sauvegarde :
 * /etc
 * /srv
 * /var
 * /data/peertube-data
 * /data/mails
 * les bases de données MySQL et Postgres

Sont exclus les dossiers de cache. 

## Commande utiles

Il est préférables d'utiliser le wrapper `borgmatic` pour effectuer les opérations étant donné qu'il est déjà configuré, ainsi :
 * on peut utiliser `borgmatic list` pour lister les archives ;
 * les archives peuvent être montées en tant que système de fichier via [FUSE](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) avec `borgmatic mount --archive ARCHIVE --mount-point PATH`, `ARCHIVE` est le nom d'une archive ou latest pour monter la dernière, le système de fichier peut être unmount avec `borgmatic umount` ;

### Bases de données

Le dump des bases est dans `run/root/borgmatic`
  * les bases de données peuvent être restaurées avec `borgmatic restore`. **Attention cette action supprime TOUTES les bases de données du serveur pour les remplacer et doit être effectuer par le même utilisateur qui effectue les sauvegardes (root).**
  * Pour restaurer uniquement une (ou plusieures) base, on peux utiliser la commande `borgmatic restore --archive latest --database nextcloud [--database autre...]`
  
## A savoir
 * Une métric est envoyée à prometheus à chaque étape de la sauvegarde, une alerte est envoyé si il n'y a pas eu de sauvegarde dans les dernières 24h ou si la sauvegarde à échouée.
 * Pour exclure un dossier des sauvegardes on peut le rajouter à la liste dans le fichier de configuration (`/etc/borgmatic/config.yaml`) ou créer un fichier .nobackup dans ce dossier.
 * Créer un fichier `CACHEDIR.TAG` dans un dossier marque ce dossier comme dossier de cache et l'exclue des sauvegardes.