Sauvegarder ses documents sans prise de tête? Borg Backup est là pour ça!

Introduction

Cet article va aborder Bog Backup (mais pas les GUIs ni Android ni macOS) ainsi que la fameuse stratégie de sauvegarde 3-2-1 et comment j’ai organisé mon système de sauvegarde.

Borg Backup

Borg est un logiciel open source destiné à sauvegarder les documents. Il propose deux modes de fonctionnement et de nombreuses options (compression et chiffrement notamment). Il fonctionne sous Linux et macOs.

Modes de fonctionnement

Borg propose soit du push soit du pull. En push, chaque client (=celui qui veut sauvegarder) envoie son contenu dans le repository (explication un peu plus loin) de son choix. En pull, c’est le serveur qui contacte un agent présent sur le client pour gérer le contenu à sauvegarder.

Comment choisir entre les deux modes?

C’est plutôt facile, selon moi:

  • en entreprise, on va vouloir centraliser le contrôle des clients (quel poste était éteint? quel poste n’a pas réussi à envoyer, etc). Le mode “pull” s’impose alors naturellement.
  • pour un usage domestique, on va plutôt laisser l’initiative aux utilisateurs de choisir quand ils veulent sauvegarder et c’est le mode “push” qui sera à privilégier.

Centralisation des backups

Bien que Borg propose de sauvegarder sur des disques locaux (pratique si on a un seul ordinateur à sauvegarder et qu’on ne veut pas investir dans un NAS, par exemple), il est tout de même préférable de pousser les sauvegardes sur un NAS.

Dans mon cas, mon valeureux NAS maison qui va stocker les sauvegardes.

Comment Borg gère les fichiers sauvegardés?

Borg s’organise autour de deux éléments: les repositories et les chunks.

Un chunk est un bloc de données composant un ou plusieurs fichiers. Oui, “un ou plusieurs”. L’objectif des chunks est de permettre la déduplication de contenu et optimiser l’espace consommé par les sauvegardes.

Un repository contient l’ensemble des chunks ajoutés et modifiés par une sauvegarde. Un repository contient donc la liste des sauvegardes, organisées par date de création.

Configuration du NAS

Samba!

Afin que les clients puissent sauvegarder leurs fichiers, il faut donner accès à un ou plusieurs dossiers sur le NAS. Pour cela, j’ai mis en place un serveur Samba.

L’installation se fait avec la commande sudo apt install samba. Rien de sorcier ici. Ensuite, il faut configurer Samba. Il n’y a pas de difficultés non plus, mais il faire attention à deux ou trois points.

On commence par éditer le fichier /etc/samba/smb.conf.

Section [global]

Ici on va définir plusieurs options:

  • le “workgroup”: workgroup = GTG
  • l’interface réseau: interfaces = eth0 192.168.1.10/24 (eth0 est le nom de la carte réseau, l’adresse IP est celle du NAS)
  • on force samba sur l’interface réseau: bind interfaces only = yes
  • pas de synchronisation des mots de passe: unix password sync = yes
  • pour utiliser les mots de passe locaux Samba:
    • passdb backend = tdbsam
    • security = user
    • null passwords = false

Définition d’un share

Il faut ajouter une section dans le fichier:

    
 1[NomDuShare]
 2path = /chemin/NomDuShare
 3valid users = <user>
 4read only = no
 5create mask = 0740
 6directory mask = 0740
 7guest ok = no
 8browseable = yes
 9writeable = yes
10public = no
11comment = Super dossier!

Ensuite, il faut:

  • créer l’utilisateur Samba: sudo pdbedit -a -u <user>
    • Ce point mérite un peu d’attention: l’utilisateur samba doit exister en tant qu’utilisateur Linux!
  • créer le dossier /chemin/NomDuShare: sudo mkdir -p /chemin/NomDuShare
  • Accorder les droits sur le dossier à l’utilisateur choisi:
    • sudo chown -R <user>:<group> /chemin/NomDuShare
    • sudo chmod 740 -R /chemin/NomDuShare

Vérifier et mettre à jour

Pour finir, il convient de contrôler la configuration Samba avec sudo testparm. Si la configuration est correcte, il faut redémarrer Samba: sudo systemctl restart smbd

Et voilà, c’est prêt!

Configuration d’un client

Accès au share

Afin d’accéder au share, il faut faire un mount. Le plus simple est de configurer /etc/fstab et ajouter la ligne suivante:

    
1//nas/CheminDuShare /dossier/backups cifs noauto,user,uid=user,username=samba 0 0 

Détails des paramètres:

  • //nas: le nom DNS complet ou l’adresse IP du serveur Samba
  • CheminDuShare: le même nom que le share définit sur le serveur
  • /dossier/backups: le point de montage du share sur le client (IMPORTANT! il ne faut pas de / final!)
  • uid=user: il faut remplacer “user” par le compte de l’utilisateur qui sera propriétaire du dossier “/dossier/backups”
  • username=samba: il faut remplacer “samba” par le compte de l’utilisateur sur le serveur Samba

Une fois modifié, il faut passer un coup de sudo mount -a afin que le point de montage soit connu. Ainsi configuré, il suffit de faire un mount /dossier/backupsavec son compte utilisateur et hop! on a accès au share Samba.

Préparation Borg

Ensuite, il faut installer Borg (merci Captain Obvious!) puis décider quels dossiers sauvegarder dans quel repository.

Avant de sauvegarder, il faut initialiser le repository comme ceci (le share doit être monté):

    
1borg init --encryption repokey /dossier/backups 

Borg va ensuite demander deux fois la “passphrase” qui servira à chiffrer les sauvegardes (Utiliser KeePass pour générer et stocker la passphrase est le meilleur choix). Une fois le repository initialisé, il faut surtout conserver une copie de la clé de chiffrement! Pour cela, il faut utiliser la commande borg key export /dossier/backups et copier le résultat soit dans un fichier (beurk), soit dans KeePass (tip top). Et voilà, le repository est prêt pour la sauvegarde.

Sauvegarder avec Borg

La sauvegarde est réalisée grâce à la commande _ borg create _. Une fois le share monté, il faut faire: borg create --stats --progress --compression zlib,9 /dossier/backups::Archive /dossier/a/sauver Explications:

  • –stats va afficher les statistiques (taille totale, taille dédupliquée, taille compressée)
  • –progress va afficher l’avancement de la sauvegarde
  • –compression zlib,9 va compresser les données à mort lors de l’envoi
  • /dossier/backups::Archive: les données seront sauvegardées dans le share, dans l’archive nommée “Archive”
  • /dossier/a/sauver est le dossier que le client veut sauvegarder. On peut stoker plusieurs dossiers dans la même archive.

Facile, non?

Le résultat de la commande est le suivant:

    
 1Repository: /media/gob0/backups
 2Archive name: Documents
 3Archive fingerprint: 9dec01887a8f40682b30ad9431150e2c68fcfd68ba86ef690e63c84ce663891a
 4Time (start): Sat, 2023-06-24 17:44:24
 5Time (end):   Sat, 2023-06-24 17:51:23
 6Duration: 6 minutes 58.57 seconds
 7Number of files: 4958
 8Utilization of max. archive size: 0%
 9------------------------------------------------------------------------------
10                       Original size      Compressed size    Deduplicated size
11This archive:                7.92 GB              6.72 GB              6.53 GB
12All archives:                7.92 GB              6.72 GB              6.53 GB
13
14                       Unique chunks         Total chunks
15Chunk index:                    7218                 7622
16------------------------------------------------------------------------------

Stratégie de sauvegarde 3-2-1

Cette statégie de sauvegarde repose sur la multiplication des données, des supports et des lieux de stockage.

Le sigle 3-2-1 prévoit:

  • 3 copies des données, y compris l’ordinateur sur lequel sont produites les données.
  • 2 copies dans le même batîment, sur des supports différents.
  • 1 copie (chiffrée!) en dehors du batîment. A choisir, un safe dans une banque est bien plus sécurisé et moins cher qu’un stockage cloud.

3 copies?

Il est évident que chez M./Mme tout le monde, réaliser 3 copies n’est pas forcément simple. Quand on dispose d’un NAS, c’est tout de suite plus facile. Entre les documents disponibles sur les ordinateurs, la copie sur le NAS et encore une copie sur disque externe, l’objectif est atteint.

2 supports?

Ici l’objectif est d’éviter d’avoir deux copies sur un même disque ou même matériel (par exemple, dans deux volumes du même NAS). Comme toutes mes copies de données sont sur des matériels différents, l’objectif est atteint.

1 copie externe?

Depuis plusieurs années, je tourne avec plusieurs disques externes que je dépose dans un safe dans une banque. Je change de disque chaque semaine. Pour les curieux, le coût du safe est d’environ 180.- CHF, et pour le prix on peut ranger 3 à 5 disques. Donc l’objectif est atteint.

Méthodologie personnelle

En excluant le mac et les smartphones Android, il reste tout de même 4 ordinateurs à sauvegarder (contenu: documents personnels, scolaires, développements, photos et blog. Sans compter les configurations des routeurs et firewall).

Ordinateurs vers NAS

Chaque ordinateur lance la commande borg create pour effectuer la sauvegarde et le tour est joué. Pour faciliter encore, j’ai préparé un script par machine pour automatiser les différentes actions (mount, borg, umount).

NAS vers disque externe

Là c’est un peu plus lourd: les disques externes sont chiffrés avec LUKS. Il faut donc monter le disque avec les bonnes options et le bon mot de passe. Ensuite, Rsync fait son oeuvre puis il faut démonter le disque. Tu l’as deviné, j’ai écrit un script pour cette tâche.

Conclusion

Borg Backup un super logiciel de sauvegarde, facile à prendre en main et efficace pour gérer le transfert et le stockage des fichiers. Avec Borg, il n’y a plus de raison de ne pas mettre en place de sauvegarde!

Bien que non abordé dans cet article, il existe de nombreuses interfaces pour faciliter l’utilisation (principalement l’exploration des sauvegardes et la restauration des fichiers).