Préparation du serveur pour Borg Backup

Dans l’étape précédente, on a installé le serveur Raspbian. On va désormais préparer le terrain pour l’utilisation future de BorgBackup.

Préparation du disque externe

Les données sauvegardées seront stockées sur un disque dur externe.

Parce que les données seront chiffrées par BorgBackup lui-même, j’ai décidé de ne pas chiffrer les partitions (cryptsetup, luks − dans ce cas utilisez crypttab pour le montage automatique) ou utiliser des volumes Veracrypt. De plus, s’agissant d’un disque externe qui est amené à être utilisable sur plusieurs ordinateurs (en cas de restauration d’un volume important de données par exemple), je préfère utiliser un système de fichier NTFS en lieu et place du classique ext4 qui m’a déjà posé des problèmes de droits de lecture/écriture.

Au besoin, on peut formatter la partition avec la commande suivante, en choisissant le nom de la partition − “BackupWD2T” dans mon cas (attention, cela effacera les données présentes sur la partition) :

pi@raspberry:~$ sudo mkfs.ntfs -Q -L BackupWD2T /dev/sda1

Montage automatique au démarrage

Il faut que la partition soit accessible toujours au même emplacement et montée au démarrage du serveur.

# On crée le point de montage
pi@raspberry:~$ mkdir /mnt/BackupWD2T

# On récupère l’UUID de la partition
pi@raspberry:~$ sudo blkid | grep BackupWD2To
/dev/sda1: LABEL="BackupWD2To" UUID="3253548560E829FD" TYPE="ntfs" PTTYPE="dos" PARTUUID="0002f734-01"

# On édite le fichier fstab
pi@raspberry:~$ nano /etc/fstab

Il faut y ajouter une ligne similaire à celle-ci :

UUID="3253548560E829FD" /mnt/BackupWD2T ntfs-3g defaults,uid=1000,umask=0022,nofail,windows_names 0 0

Les options choisies sont les suivantes :

  • uid=1000 - uid de l’utilisateur qui aura accès aux données (pi dans notre cas, à récupérer avec la commande id -u)
  • umask=0022 - paramétrage des droits en lecture/écriture
  • nofail - Afin que le serveur puisse démarrer si le disque est débranché
  • windows_names - afin d’éviter certains caractères incompatibles avec Windows dans les noms de fichiers

Pour en savoir plus :

Installation de BorgBackup

Maintenant qu’on sait où seront stockées les sauvegardes, on doit installer borgbackup sur le serveur et sur le client à sauvegarder. Cela se fait tout simplement via un sudo apt install borgbackup. Cela installera la version 1.1.9 sur Raspbian Buster et 1.1.15 sur Ubuntu 20.04.

Une installation manuelle de la dernière version du logiciel est possible en allant chercher la version pré-compilée de borgbackup, tel qu’expliqué sur cette page de la documentation officielle.

pi@raspberrypi:~ $ sudo wget https://borg.bauerj.eu/bin//borg-1.1.16-armv6 -O /usr/local/bin/borg
pi@raspberrypi:~ $ sudo chmod a+x /usr/local/bin/borg 
pi@raspberrypi:~ $ sudo chown root:root /usr/local/bin/borg
pi@raspberrypi:~ $ sudo chmod 755 /usr/local/bin/borg
pi@raspberrypi:~ $ sudo ln -s /usr/local/bin/borg /usr/local/bin/borgfs

On vérifie que le binaire est bien dans le PATH :

pi@raspberrypi:~ $ which borg
/usr/local/bin/borg

pi@raspberrypi:~ $ borg --version
borg 1.1.16

Mise en place d’une clé SSH sécurisée

Afin que la sauvegarde de l’ordinateur puisse se faire automatiquement, on va installer une clé SSH sans mot de passe pour se connecter au serveur de sauvegarde.

Si on ne souhaite sauvegarder que le répertoire home d’un seul utilisateur, on peut tout créer et lancer avec cet utilisateur. En revanche, si on souhaite sauvegarder les données de plusieurs utilisateurs ou le système entier, il est nécessaire de lancer la sauvegarde en root.

On crée une clé SSH sans mot de passe (option “-N ”” de ssh-keygen) :

root@laptop:~# ssh-keygen -N '' -f /root/.ssh/id_rsa_borg
root@laptop:~# ssh-copy-id -i /root/.ssh/id_rsa_borg pi@192.168.0.26

On se connecte ensuite au Raspberry Pi et on modifie la clé nouvellement installée afin de limiter son usage aux sauvegardes Borg :

root@laptop:~# ssh -i .ssh/id_rsa_borg pi@192.168.0.26
pi@raspberrypi:~ $ nano .ssh/authorized_keys

Il faut modifier le début de la ligne contenant la clé publique en question pour qu’elle passe de ceci :

ssh-rsa AAAA[…] root@laptop

À cela :

command="borg serve --append-only --restrict-to-path /mnt/BackupWD2T/Backups/shaman",restrict ssh-rsa AAAA[…] root@laptop