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 à utilise : Borgmatic.