Passer au contenu principal

Borg

https://borgbackup.readthedocs.io/

Quelques mots sur Borg

  • il est très simple d'usage ;
  • les données sont dédupliquées ;
  • les sauvegardes peuvent être compressées ;
  • les sauvegardes peuvent être effectuées en local ou à distance ;
  • les sauvegardes peuvent être montées (et donc utilisées) comme un système de fichiers classiques.

Pour se simplifier la vie, on peut utiliser Borgmatic qui est un wrapper de Borg.

Installation

apt-get install borgbackup

On peut aussi utiliser pip, c’est vous qui voyez.

Initialisation

On doit d'abord initialiser le répertoire qui accueillera les sauvegardes :

mkdir /opt/backup
borg init /opt/backup/

Au cas où l'on souhaiterait utiliser un serveur distant pour acceuillir les sauvegardes, il faut que celui-ci soit joignable par SSH et dispose lui-aussi de Borg.

borg init <username>@<server>:/remotepath

Dans le cas où il n'est pas possible d'y installer Borg (un espace de stockage fourni par un hébergeur par exemple), il est possible de le monter en sshfs :

apt-get install sshfs
sshfs <username>@<server>:/remotepath /opt/backup/

Sshfs possède de multiples options améliorant les performances et la stabilité du point de montage, je vous laisse chercher car je ne les ai pas sous la main.

Par défaut, l'initialisation vous demandera un mot de passe qui servira à chiffrer les sauvegardes. Il est possible de désactiver le chiffrement via les options de borg init.

borg help init

Le chiffrement nécessite deux choses pour fonctionner : le mot de passe et une clé de chiffrement. Dans le cas d'une initialisation par défaut (sans options), la clé de chiffrement sera dans le fichier /opt/backup/config.

Il est impératif de sauvegarder cette clé sans laquelle vos sauvegardes seraient inutiles ! On peut l'exporter via borg key export /opt/backup et l'importer via borg key import /opt/backup keyfile.

Le mot de passe vous sera demandé pour toute opération sur les sauvegardes (création, restauration, etc). Pour éviter de le taper toutes les cinq minutes, vous pouvez exporter la variable d'environnement BORG_PASSPHRASE :

export BORG_PASSPHRASE="mot_de_passe"

N’oubliez pas que cet export se retrouvera dans votre historique bash (ou zsh, ou ce que vous utilisez) ! Je vous conseille de le supprimer de votre historique après usage.

Création d'une sauvegarde

Rien de plus simple :

borg create /opt/backup::nom_de_la_sauvegarde /chemin/a/sauvegarder

L'option --stats est très appréciable car elle fournit des informations sur la sauvegarde créée (comme sa taille par exemple).

Le nom de la sauvegarde doit être unique et ne doit pas se terminer par .checkpoint. On peut utiliser des placeholders comme {hostname} dans le nom de la sauvegarde. Voir borg help placeholders pour plus de détails.

Manipulation des sauvegardes

Lister les sauvegardes

borg list /opt/backup

Supprimer une sauvegarde

borg delete /opt/backup::nom_de_la_sauvegarde

Renommer une sauvegarde

borg rename /opt/backup::nom_de_la_sauvegarde nouveau_nom

Extraire le contenu d'une sauvegarde

Attention ! Le contenu sera extrait dans le répertoire où vous vous trouvez !

borg extract /opt/backup::nom_de_la_sauvegarde

Il est possible de n'extraire que certains fichiers :

borg extract /opt/backup::nom_de_la_sauvegarde home/etudiant/travail.pl
borg extract /opt/backup::nom_de_la_sauvegarde home/etudiant/ --exclude '*.rb'

Monter une sauvegarde

borg mount /opt/backup::nom_de_la_sauvegarde /mnt

Vous pourrez alors parcourir et utiliser (cp, cat…) la sauvegarde en parcourant le dossier /mnt.

Pour démonter la sauvegarde :

borg umount /mnt

Voir les informations détaillées d'une sauvegarde

borg info /opt/backup::nom_de_la_sauvegarde

Supprimer les vieilles sauvegardes

Même si l'espace disque ne coûte aujourd'hui pas très cher, on ne va quand même pas garder 30 ans de sauvegardes

borg prune -w 4 --prefix='{hostname}-' /opt/backup

Cette commande ne gardera que 4 sauvegardes hebdomadaires. L'option --prefix='{hostname}-' permet de discriminer les sauvegardes à éliminer d'après un préfixe (ici le nom de la machine), ceci afin d'éviter de supprimer les sauvegardes d'une autre machine si jamais le répertoire de sauvegarde servait pour plusieurs machines.

Je vous laisse regarder les autres options de borg prune dans le manuel.

Vérifier une sauvegarde (ou toutes)

borg check /opt/backup::nom_de_la_sauvegarde
borg check /opt/backup

Attention ! Cela vérifie que la sauvegarde n'est pas corrompue, pas que vous avez ciblé les bons répertoires à sauvegarder ! :P

Vérification des sauvegardes

« Une sauvegarde est à la fois valide et corrompue tant qu'on n'a pas essayé de la restaurer »

La sauvegarde de Schrödinger

Et oui, tant qu'on n'a pas essayé de restaurer des fichiers depuis la sauvegarde, comment savoir si celle-ci a fonctionné ? Les déboires de la société Gitlab qui a perdu 6 heures d'enregistrements en base de données pour cause de dysfonctionnement des 5(!) méthodes de sauvegardes nous en donnent la preuve.

Il existe cependant un outil qui permet de vérifier que vos sauvegardes respectent un certain nombre de critères : Backup Checker

Avec cet outil, on pourra s'assurer que la sauvegarde comporte bien tel ou tel fichier, soit d'une certaine taille, etc.

À défaut d'avoir le temps de mettre en place un tel outil, on pourra ponctuellement essayer de restaurer localement un fichier. Même si cela ne vérifie pas grand chose, c'est toujours mieux que pas de vérification du tout !

Un peu de lecture

http://sebsauvage.net/wiki/doku.php?id=borgbackup

Plutôt que d’écrire un script qui utilise borg…

Il y a un soft qui fait une surcouche à Borg, le rendant plus simple à utiliser : Borgmatic.