Utiliser Borg avec Borgmatic pour faire ses sauvegardes facilement

Séries - Sauvegarde via BorgBackup

borgmatic est un script de sauvegarde qui “pilote” le logiciel de sauvegarde Borg/BorgBackup. Il rends facile la mise en place d’une sauvegarde fonctionnelle via BorgBackup car ce script s configure tout simplement via un unique fichier YAML.

BorgBackup est un logiciel de sauvegarde de fichier qui permet (entre autre) :

  • La déduplication des fichiers : un même fichier présent plusieurs fois dans vos données ne sera copié qu’une fois (il ne prendra pas x fois sa taille dans votre archive)
  • Compression des archives : les données dans l’archive finale sont compressées pour économiser encore plus de place
  • Chiffrement des archives : Evite qu’un tiers (hébergeur, pirate, état) ne lise vos données.
  • Support de FUSE pour explorer les archives comme de simples dossiers.
  • Support de SSH pour sauvegarder facilement vers un serveur distant (et ainsi appliquer la règle du 3-2-1).
  • Le logiciel Borg créer un dépôt (repository) sur le serveur local et/ou à distance : ou peut avoir plusieurs dépôts. C’est à ce niveau qu’on définit le mode de chiffrement (par dépôt).
  • Les données à sauvegarder sont dédupliquées/compressées/chiffrées et placées dans des archives.
  • Les archives sont ensuite placées dans le·s dépôt·s

borgmatic est un script (écrit en Python) qui permet de se servir de Borg indirectement en réunissant tous les paramètres dans un fichier de configuration.

Ce n’est donc pas aussi puissant que les commandes borg natives qui permettent beaucoup de fins réglages mais :

  • Il simplifie beaucoup les paramètres basiques / redondants de Borg : les commandes borgmatic sont bien plus “simples” à taper/lire.
  • Il conserve la même logique d’action que Borg (init pour créer un dépôt, create pour créer une archive / sauvegarder les données, check, export, mount, list, prune, …).
  • Utiliser borgmatic n’empêche en rien d’utiliser des commandes borg à côté.

Il apporte aussi :

  • tout un système de hooks pour effectuer quelques traitement spécifiques à différents moments.
  • une intégration pour la sauvegarde de bases de données PostgreSQL et MySQL/MariaDB.
  • une intégration avec différents outils de supervision : Healthchecks, Cronitor, PagerDuty et Cronhub.

Installer borgmatic (qui installera la dépendance BorgBackup) via APT :

1
apt-get install --assume-yes borgmatic

Sous Debian, essayez de prendre au moins la version 1.7.x, via Debian bookworm ou bullseye-backports.

Lui demander de créer un fichier exemple de configuration qui sera votre point de départ avec la commande suivante :

1
generate-borgmatic-config

Ce fichier sera créé à l’emplacement /etc/borgmatic/config.yaml.

Le fichier de configuration YAML est constitué des clés suivantes :

  • location : Les fichiers sources qu’il faut sauvegarder et la/les destinations où il faut les copier/sauvegarder (les dépôts). Permet aussi de définir des masques d’inclusion/exclusions des fichiers sources.

  • storage : Les options des dépôts tels que le chiffrement, compression, les options SSH (pratique pour définir une clé SSH spécifique), le nom par défaut des archives, options à ajouter pour la commande borg (que borgmatic exécute pour nous).

  • retention : La politique de rétention des données dans les dépôts tels que l’âge maximal des sauvegardes/archives (supprimera celles qui dépassent le seuil) et le nombre d’archive quotidienne/hebdomadaire/mensuelle/annuelle à conserver.

  • consistency : Les réglages sur la vérification des données sauvegardées. Il peut ne s’agir que de vérification de la consistance des dépôts, mais cela peut aller jusqu’à une comparaison des données (qu’on peut limiter à quelques sous-dossiers si besoin).

  • output : Porte sur la sortie texte et la journalisation des exécutions de borgmatic.

  • hooks : Les commandes shell ou scripts à exécuter à différentes étapes de l’exécution de borgmatic :

    • Avant (ou après) une tâche de sauvegarde.
    • Avant (ou après) le nettoyage (prune) d’un dépôt.
    • Avant (ou après) la vérification des dépôts/archives/données.
    • Avant (ou après) l’extraction d’une archive.
    • En cas d’erreur.
    • Avant (ou après) toutes les actions (si action de sauvegarde).

    Cette section des hooks contient aussi les réglages pour la sauvegarde des bases de données et l’intégration avec les outils de supervision.

Une fois la configuration adaptée à vos besoins, la commande suivante permet de vérifier sa bonne syntaxe :

1
validate-borgmatic-config

La commande suivante initialise un dépôt Borg chiffré.

1
borgmatic init --encryption repokey

Une fois le dépôt créer, on peut exporter la clé avec :

1
2
3
borg key export /path/to/repo encrypted-key-backup
borg key export --paper /path/to/repo encrypted-key-backup.txt
borg key export --qr-html /path/to/repo encrypted-key-backup.html

Pour effectuer une sauvegarde (créer une archive) :

1
borgmatic create --verbosity 1 --list --stats

L’exploration d’une archive avec le mount :

La commande suivante mount le dépôt Borg dans le dossier /mnt/exploration_depot_borg pour pouvoir l’explorer/lire :

1
2
mkdir --parents /mnt/exploration_depot_borg
borgmatic mount --mount-point /mnt/exploration_depot_borg

Une fois l’exploration terminée (recherche de fichier, copie -en dehors de l’archive-, consultation de fichiers, …) on peut la de-mount-er avec :

1
2
borgmatic umount --mount-point /mnt/exploration_depot_borg
rmdir /mnt/exploration_depot_borg