Borg Backup : un outil de sauvegarde extrêmement simple mais puissant (et gérant la déduplication)
Borg est un outil de sauvegarde incrémentielle en ligne de commande écrit en Python. C’est un fork d’Attic mais un peu plus en avance puisqu’il corrige pas mal de bug d’Attic et propose des fonctionnalités supplémentaires (choix de la compression, par exemple).En outre le projet est très actif et en constante évolution.
Une des particularités de Borg est qu’il supporte la déduplication, c’est-à-dire que les fichiers sauvegardés sont découpés en une multitude de tronçons, et Borg ne sauvegarde que les tronçons qui ont été modifiés depuis la dernière sauvegarde, d’où une économie substantielle en termes d’espace disque et un gain lors de transfert des sauvegardes distantes. De plus Borg gère différents types de compression permettant de diminuer encore la taille des sauvegardes ainsi que le chiffrement en AES 256-bit.
Une fois compris le principe des sauvegardes de Borg, celui-ci est très simple d'utilisation au quotidien, pas de base de données à gérer, les commandes sont simples et logiques et l'aide est très bien faite.
Il possède une interface graphique en version alpha, Vorta.
Particularités principales
- Optimisation de l'espace disque : la déduplication, basée sur une segmentation du contenu, est utilisée pour réduire le nombre d'octets stockés: chaque fichier est divisé en un certain nombre de morceaux de longueur variable et seuls les morceaux qui n'ont jamais été sauvegardés auparavant sont ajoutés au dépôt. Peu importe qu'ils viennent de machines différentes, de sauvegardes précédentes ou de la même sauvegarde. Il n'y aura aucun fichier en double dans ces sauvegardes, tout reposant sur les empreintes de chaque fichier sauvegardé. Tous les morceaux dans le même dépôt sont référencés, peu importe s’ils proviennent de différentes machines, à partir de sauvegardes précédentes, à partir de la même sauvegarde ou même à partir du même fichier unique.
- Vitesse : Le code critique (chunking, compression, chiffrement) est implémenté en C / Cython et Borg gère la mise en cache locale des fichiers / données d'index des morceaux ainsi que la détection rapide des fichiers non modifiés.
- Chiffrement des données : Toutes les données peuvent être protégées en utilisant le méthode de chiffrement AES 256-bit, l'intégrité des données et l'authenticité sont vérifiées en utilisant HMAC-SHA256. Les données sont chiffrées côté client.
- Compression : Toutes les données peuvent être compressées au choix par LZ4 (super rapide, faible compression), zlib (vitesse moyenne et compression aussi) ou lzma (basse vitesse, compression élevée). À noter que plus la compression est forte, plus le processeur est sollicité.
- Sauvegardes hors site : Borg peut stocker des données sur un hôte distant accessible via SSH. Si Borg est installé sur l'hôte distant, des gains importants de performance peuvent être atteints par rapport à un système de fichiers réseau (sshfs, nfs, …).
- Sauvegardes montables comme un simple système de fichier : Les archives de sauvegarde peuvent être montées comme des systèmes de fichiers dans l'espace utilisateur pour un examen interactif, rapide et faciles des sauvegardes, la restauration se faisant alors par une simple copie de fichier.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
Installation
Il suffit juste d'installer les paquets borgbackup et borgbackup-doc, ceux-ci installant automatiquement les dépendances nécessaires.
Utilisation
Toutes les commandes se lanceront via le terminal :
De nombreuses options sont disponibles pour chaque commande, aussi n'hésitez pas à consulter la documentation de Borg Backup afin d'avoir toutes les possibilités permises pour chaque commande.
- Création d'un dépôt pour gérer les sauvegardes :
borg init /path-to-repo
- Sauvegarde des répertoires ~/src et ~/Documents dans une archive appelée Lundi :
borg create /path-to-repo::Lundi ~/src ~/Documents
- Le lendemain, créez une nouvelle archive appelée Mardi :
borg create -v --stats /path-to-repo::Mardi ~/src ~/Documents
Cette sauvegarde sera beaucoup plus rapide et beaucoup plus petite puisque seules les nouvelles données jamais vus auparavant sont stockées. L'option –stats demande à Borg les statistiques de sortie sur l'archive nouvellement créée, comme la quantité de données uniques (non partagé avec d'autres archives)
- Affiche la liste de toutes les archives dans le dépôt :
borg list /path-to-repo
Lundi lun, 15/04/2016 19:14:44 Mardi mar, 16/04/2016 19:15:11
- Affiche le contenu de l'archive Lundi :
borg list /path-to-repo::Lundi
drwxr-xr-x user group 0 Mon, 2016-02-15 18:22:30 home/user/Documents
-rw-r–r– user group 7961 Mon, 2016-02-15 18:22:30 home/user/Documents/Important.doc
- Restore l'archive Lundi :
borg extract /path-to-repo::Lundi
- Monte une archive comme un système de fichier FUSE :
borg mount /path-to-repo::Lundi /tmp/mymountpoint
ensuite on peut très facilement y accéder
ls /tmp/mymountpoint
puis démonter le système de fichier
fusermount -u /tmp/mymountpoint
- On peut aussi optimiser les sauvegardes en supprimant toutes les archives qui ne correspondent pas l'une des options de rétention spécifiées :
Cette commande est normalement utilisée par les scripts de sauvegarde automatisés qui souhaitent garder un certain nombre de sauvegardes historiques.
Garder les 7 dernières archives journalières ainsi que 4 sauvegardes additionnelles de fin de semaine
borg prune --keep-daily=7 --keep-weekly=4 /path-to-repo
Garder 7 jours de sauvegarde, 4 sauvegardes de fin de semaines et toutes les sauvegardes de fin de mois (Vous remarquerez le "-" devant les sauvegardes mensuelles, spécifier un nombre négatif de sauvegardes signifie qu’on conserve une sauvegarde indéfiniment):
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=-1 /path-to-repo
Garder toutes les sauvegardes des 10 derniers jours, 4 sauvegardes additionelles de fin de semaine et toutes les sauvegardes mensuelles
borg prune --keep-within=10d --keep-weekly=4 --keep-monthly=-1 /path-to-repo
- Faire des sauvegardes, c'est bien mais les vérifier, c'est encore mieux :
Tester tout (dépôt et fichiers sauvegarde) ⇒ Attention : peut prendre un certain temps en fonction de la taille de la sauvegarde…
borg check /path-to-repo
Tester juste la cohérence du dépôt (plus rapide)
borg check --repository-only /path-to-repo
Astuces
Il est facile d'intégrer Borg dans un script bash en créant une archive par jour :
borg create /path-to-repo::{now:%Y%m%d} ~/src ~/Documents
Ainsi il sera créé chaque jour une sauvegarde différente dont le nom sera sous la forme aaaammjj
Désinstallation
Pour supprimer cette application, il suffit de supprimer son paquet. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
Voir aussi
—- Contributeurs principaux : dpara.
Basé sur « Borg Backup – Deduplicating backup program » par ruchi.