2023-10-02
Ça fait longtemps que je voulais vous parler de BorgBackup, un outil de sauvegarde que j'utilise aussi bien personnellement que professionnellement depuis quelques années maintenant. Bien que disposant de nombreuses fonctionnalités, BorgBackup reste plutôt simple à utiliser, et il bénéficie de plus d'une importante communauté et d'une excellente documentation.
Voici quelques-unes des fonctionnalités et particularités qui m'ont fait basculer sur cet outil.
Premièrement, une gestion efficace du stockage qui permet à la sauvegarde d'occuper un espace réduit. Pour cela BorgBackup déduplique les données en découpant chaque fichier en blocs (appelés chunks), ce qui lui permet de n'écrire que des données uniques dans son stockage. Un gros fichier qui change un peu entre chaque sauvegarde ne sera donc pas intégralement recopié dans le dépôt, seules les parties qui changent le seront.
Cette déduplication est extrêmement efficace, à tel point que l'un de mes stockages contenant des releases de jeux vidéos, donc beaucoup de données redondantes, passe de 2 To à une sauvegarde de seulement 217 Go. Bon ok il s'agit d'un cas assez extrême, mais le gain de place est appréciable ! 😁️
À noter également que Borg peut compresser les chunks via différents algorithmes tels que LZ4 (par défaut), zlib, LZMA et zstd. Ce dernier me semble d'ailleurs assez intéressant en termes de ratio temps de calcul / efficacité.
Deuxième point important pour moi : la rapidité des sauvegardes. BorgBackup effectue des sauvegardes incrémentales ; seuls les morceaux de fichiers qui ont changé depuis la précédente sauvegarde sont envoyés dans le dépôt.
Troisièmement, la sécurité. BorgBackup peut chiffrer les sauvegardes, ce qui permet d'éviter que les données ne se retrouvent dans la nature si un jour le disque ou le serveur les stockant était perdu ou infiltré.
Quatrièmement, la possibilité de pouvoir faire aussi bien des sauvegardes sur du stockage « local » (dossier, disque dur externe, partages de fichier SMB, NFS, SSHFS ou autre monté localement) que sur un serveur distant via SSH.
Et pour finir, la simplicité. BorgBackup est facile à utiliser, et il est facile de parcourir les sauvegardes. Ces dernières peuvent en effet être montées comme n'importe quel système de fichier sous Linux (fusermount), ce qui permet de les parcourir avec les outils habituels (terminal, navigateur de fichier,...).
Convaincus ? Alors c'est parti ! 😉️
Dans ce premier article, je vais essentiellement vous parler des concepts de base de Borg, et vous expliquer comment faire (et manipuler) une sauvegarde sur un disque local. Je vous parlerais de la sauvegarde à distance via SSH dans un prochain article.
Avant de commencer, on va faire un rapide point de vocabulaire.
Les sauvegardes de BorgBackup s'effectuent dans un dépôt (repo en anglais). Il s'agit tout simplement d'un dossier contenant les données sauvegardées ainsi qu'un ensemble de métadonnées associées.
Voici par exemple ce que contient un dépôt fraichement créé :
+-- 📂️ my-borg-repo/ +-- 📂️ data/ +-- 📄️ config +-- 📄️ hints.1 +-- 📄️ index.1 +-- 📄️ integrity.1 +-- 📄️ nonce +-- 📄️ README
Les sauvegardes effectuées dans un dépôt sont appelées des archives. Une nouvelle archive est donc créée à chaque fois que vous lancez une sauvegarde avec Borg. On conserve généralement plusieurs archives dans un dépôt afin de pouvoir « remonter dans le temps » ; pour retrouver un fichier dans l'état dans lequel il était à une date donnée.
Voici par exemple une partie des archives présentes dans le dépôt contenant la sauvegarde de mon PC portable au moment où j'écris ces lignes :
mylaptop-6c0b6779 Sat, 2022-07-02 10:39:42 [...] mylaptop-8aa6b519 Fri, 2022-07-29 12:01:03 [...] mylaptop-dd5ae326 Mon, 2022-08-22 12:00:18 [...] mylaptop-959e7858 Fri, 2022-09-30 12:00:58 [...] mylaptop-733bdb15 Mon, 2022-10-31 12:00:48 [...] mylaptop-d117d0ce Wed, 2022-11-30 12:00:09 [...] mylaptop-bb080950 Sat, 2022-12-31 15:38:52 [...] [...] mylaptop-6f364ce8 Thu, 2023-07-13 12:00:30 [...] mylaptop-74dd5447 Mon, 2023-07-17 12:00:14 [...] mylaptop-f6987d11 Tue, 2023-07-18 12:00:59 [...] mylaptop-421f0704 Wed, 2023-07-19 12:00:39 [...]
Chacune des archives ci-dessus contient une copie des données de mon dossier home/ dans l'état dans lequel elles se trouvaient à la date de la sauvegarde. Comme vous pouvez le constater, je peux remonter jusqu'à un an dans le passé, ce qui me laisse largement le temps de récupérer un fichier supprimé par erreur. 😁️
L'installation de BorgBackup est assez simple car il est disponible dans les dépôts de la plupart des distributions Linux. Il est également disponible dans les ports de plusieurs systèmes BSD, y compris pour macOS via Homebrew, et comme il s'agit d'un logiciel en Python, il peut également être installé avec pip.
Pour l'installer sous Debian / Ubuntu, le plus simple est de passer par apt :
sudo apt install borgbackup
Pour les autres distributions, les autres OS et les méthodes d'installation plus « exotiques » je vous laisse consulter la documentation d'installation officielle.
documentation d'installation officielle
Avant de pouvoir sauvegarder des données, il nous faut commencer par créer un dépôt pour les accueillir. Disons que je souhaite sauvegarder mes données sur un disque dur externe monté dans le dossier "/media/fabien/backup-hdd/". La commande pour créer le dépôt sur ce disque sera :
borg init --encryption=repokey /media/fabien/backup-hdd/my-borg-repo
L'option --encryption indique la méthode de chiffrement que l'on souhaite utiliser. Voici quelques-unes des valeurs possibles pour cette option :
Si, comme moi, vous avez choisi la méthode de chiffrement repokey, Borg va vous demander d'entrer un mot de passe. Choisissez en un fort et dont vous vous souviendrez. Si vous perdez ce mot de passe vous ne serez plus en mesure d'accéder à vos sauvegardes !
Enter new passphrase: Enter same passphrase again: Do you want your passphrase to be displayed for verification? [yN]: n [...]
Votre dépôt est maintenant créé et devrait ressembler à ça, comme vu tout à l'heure :
+-- 📂️ my-borg-repo/ +-- 📂️ data/ +-- 📄️ config +-- 📄️ hints.1 +-- 📄️ index.1 +-- 📄️ integrity.1 +-- 📄️ nonce +-- 📄️ README
Maintenant que l'on a créé le dépôt, nous allons pouvoir créer notre première archive. Imaginons pour l'exemple que je souhaite sauvegarder mes images et ma musique. La commande pour effectuer cette sauvegarde sera la suivante :
borg create \ --list \ /media/fabien/backup-hdd/my-borg-repo::'image-et-musique-{now}' \ /home/fabien/Images/ \ /home/fabien/Musique/
--------------------------------------------------------------------------------
📝️ Note:
--------------------------------------------------------------------------------
Note : Ici j'ai découpé la commande en plusieurs lignes pour en faciliter la lecture, mais vous pouvez l'écrire sur une seule ligne en supprimant les "\" qui échappent les fins de ligne.
--------------------------------------------------------------------------------
Si le dépôt est chiffré, Borg vous demandera le mot de passe puis procèdera à la sauvegarde. Cette opération peut prendre un certain temps, surtout la première fois puisque toutes les données vont devoir être copiées.
Détaillons un peu la commande ci-dessus.
la documentation de Borg sur les placeholders
Imaginons maintenant que je souhaite sauvegarder mes images, mais sans les fichiers PNG et JPEG (par ce que je fais ce que je veux 😛️). Je peux alors réécrire la commande précédente comme ceci :
borg create \ --list \ --exclude='*.png' \ --exclude='re:\.jpe?g