Comment créer des sauvegardes sécurisées et efficaces avec Restic
Restic est un programme multiplateforme, gratuit et open source écrit en Go. Nous pouvons l’utiliser pour créer des sauvegardes compressées, cryptées et peu encombrantes, car il est suffisamment intelligent pour n’archiver que des fragments de fichiers modifiés. Restic peut utiliser de nombreux services de stockage comme cibles, tels que Google Drive ou les compartiments S3 AWS (Amazon Web Services), mais fonctionne également localement et via des connexions SFTP simples.
Dans ce tutoriel, nous apprenons comment installer Restic sur les distributions Linux les plus utilisées, et comment l’utiliser pour créer et restaurer des données en toute sécurité.
Dans ce tutoriel, vous allez apprendre :
- Comment installer Restic sur la distribution Linux la plus utilisée
- Comment initialiser et monter un dépôt Restic
- Comment créer un instantané, répertorier et extraire son contenu
Installation de Restic
Tout d’abord, voyons comment installer Restic sur notre système. Si nous utilisons RHEL (Red Hat Enterprise Linux) ou l’un de ses clones, tel que Rocky Linux, avant de pouvoir procéder à l’installation, nous devons ajouter le référentiel EPEL aux sources du logiciel système. Sur Rocky, on peut le faire en installant simplement le paquet « epel-release » :
sudo dnf install epel-releasePour ajouter EPEL sur un système RHEL, nous devons télécharger la version appropriée du paquet epel-release à partir du site web du projet. Supposons que nous utilisions RHEL 9, par exemple, nous exécuterions :
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpmSi nous fonctionnons sur Fedora, nous n’avons rien de spécial à faire, puisque le paquet restic est disponible dans le dépôt officiel. Dans toutes ces distributions, nous pouvons installer Restic en exécutant :
sudo dnf install resticL’installation de Restic sur les distributions basées sur Debian consiste simplement à exécuter la commande suivante :
sudo apt install resticComme méthode alternative, inter-distribution, nous pouvons télécharger et installer le binaire pré-construit Restic directement à partir du dépôt github du projet. Au moment de la rédaction de cet article, la dernière version disponible est la 0.16.2.
Initialisation d’un référentiel
Restic est capable de sauvegarder les données localement, via des connexions SFTP et sur plusieurs plateformes telles que AWS ou Google Drive. Dans ce tutoriel, par souci de simplicité, nous allons créer un dépôt local. Pour créer un dépôt, nous utilisons la commande restic init et nous fournissons le chemin du dépôt cible comme argument de l’option -r. Dans l’exemple ci-dessous, nous créons le dépôt « restic-repo » sous le répertoire /mnt :
sudo restic init -r /mnt/restic-repoÉtant donné que nos données sont protégées par cryptage, nous sommes invités à fournir un mot de passe pour le référentiel. Chaque fois que nous invoquons restic, nous devons le pointer vers l’emplacement du dépôt. Cela peut vite devenir agaçant. Pour l’éviter, nous pouvons simplement attribuer le chemin du dépôt comme valeur de la variable d’environnement RESTIC_REPOSITORY.
Création de notre première sauvegarde
Une fois que nous avons initialisé notre dépôt, nous pouvons créer notre premier instantané. Pour créer un instantané, nous utilisons la commande backup. Dans le cas le plus basique, nous fournissons simplement le chemin d’accès au référentiel et la liste des fichiers que nous voulons inclure dans la sauvegarde. Supposons que nous voulions archiver tout le contenu du répertoire /etc, nous exécuterions :
sudo restic backup -r /mnt/restic-repo /etcAu lieu de passer la liste des fichiers directement depuis la ligne de commande, nous pouvons les écrire, un par ligne, dans un fichier. Nous passons ensuite le chemin du fichier en argument à l’option --files-from. Une fois l’instantané créé, nous recevrons un rapport montrant des informations importantes telles que le nombre de fichiers et de répertoires qu’il contient :
repository a6797806 opened (version 2, compression level auto)
created new cache in /root/.cache/restic
no parent snapshot found, will read all files
Files: 1477 new, 0 changed, 0 unmodified
Dirs: 427 new, 0 changed, 0 unmodified
Added to the repository: 24.957 MiB (5.953 MiB stored)
processed 1477 files, 23.789 MiB in 0:00Le premier instantané comprendra tous les fichiers ; Les suivantes prendront moins de temps, car elles ne comprendront que les fragments de fichiers qui ont été réellement modifiés.
Exclusion de fichiers et de répertoires d’un instantané
Dans l’exemple précédent, nous avons inclus tout le contenu du répertoire /etc dans l’instantané. Parfois, cependant, nous pouvons vouloir exclure certains fichiers et répertoires de la sauvegarde. Nous pouvons spécifier des modèles d’exclusion comme argument de l’option --exclude. Supposons, par exemple, que nous voulions exclure tous les fichiers avec l’extension « .py » ; Voici la commande que nous exécuterions :
sudo restic backup -r /mnt/restic-repo /etc --exclude *.pyNous pouvons répéter l’option --exclude plusieurs fois, afin de spécifier plusieurs modèles d’exclusion. Nous avons également la possibilité d’écrire tous les motifs d’exclusions dans un fichier, un par ligne, puis de passer le chemin dudit fichier en argument à l’option --exclude-file.
Liste des instantanés dans un référentiel
Chaque fois que nous utilisons restic, un nouvel instantané est créé. Pour récupérer la liste des instantanés dans un dépôt, nous utilisons la commande restic snapshots. Pour lister tous les instantanés dans le dépôt « restic-repo », nous exécuterions :
sudo restic snapshots -r /mnt/restic-repoDans ce cas, après avoir fourni le mot de passe du référentiel, la commande produit le résultat suivant :
repository a6797806 opened (version 2, compression level auto)
ID Time Host Tags Paths
------------------------------------------------------------
982dac84 2023-11-23 12:47:53 fingolfin /etc
a91be944 2023-11-24 10:16:50 fingolfin /etc
------------------------------------------------------------
2 snapshotsLa sortie inclut des informations sur chaque instantané :
- ID
- Date de création
- Hôte sur lequel l’instantané a été créé
- Étiquettes
- Fichiers inclus
L’information la plus importante ici est l’ID, car nous l’utilisons pour référencer un instantané lorsque nous voulons répertorier ou extraire son contenu.
Liste des fichiers dans un instantané
Pour obtenir la liste des fichiers inclus dans un instantané, nous utilisons la commande restic ls, en passant l’ID de l’instantané comme argument. Supposons que nous voulions vérifier le contenu du premier instantané que nous avons créé (a91be944). Nous courrions :
sudo restic ls -r /mnt/restic-repo a91be944On peut également décider de récupérer le contenu d’un ou plusieurs répertoires spécifiques inclus dans le snapshot. Pour lister uniquement les fichiers inclus dans le répertoire /etc/xdg, par exemple, nous exécuterions :
sudo restic ls -r /mnt/restic-repo a91be944 /etc/xdgMontage d’un référentiel
Pour inspecter le contenu d’un dépôt, nous pouvons le monter à l’aide de la commande restic mount. Il suffit de spécifier le répertoire que l’on souhaite utiliser comme point de montage. Supposons que nous voulions monter le dépôt dans le répertoire /media, nous exécuterions :
sudo restic mount -r /mnt/restic-repo /mediaUne fois qu’un dépôt est monté, tous les instantanés qu’il contient se trouvent dans le répertoire « snapshots » (/media/snapshots dans ce cas) :
ls -l /media/snapshots
total 1
dr-xr-xr-x. 2 root root 0 Nov 23 12:47 2023-11-23T12:47:53+01:00
dr-xr-xr-x. 2 root root 0 Nov 24 10:16 2023-11-24T10:16:50+01:00
lrwxrwxrwx. 1 root root 25 Nov 24 10:16 latest -> 2023-11-24T10:16:50+01:00Chaque répertoire contient l’ensemble de l’arborescence des fichiers, « latest » n’étant qu’un lien symbolique vers le dernier instantané :
sudo tree /media/snapshots -L 2
/media/snapshots
├── 2023-11-23T12:47:53+01:00
│ └── etc
├── 2023-11-24T10:16:50+01:00
│ └── etc
└── latest -> 2023-11-24T10:16:50+01:00Restauration des données
La partie la plus importante d’une sauvegarde est la possibilité de restaurer facilement les données qu’elle contient. Lors de l’utilisation de restic, pour restaurer les données à partir d’un instantané, nous utilisons la commande restore. Nous passons l’ID de l’instantané que nous voulons restaurer en argument, et nous passons le répertoire dans lequel nous voulons extraire la sauvegarde, en argument de l’option --target :
sudo restic restore -r /mnt/restic-repo latest --target=/Nous pouvons décider de restaurer l’intégralité du contenu d’un instantané, comme nous l’avons fait ci-dessus, ou seulement une partie de celui-ci. Pour extraire uniquement un sous-dossier d’un instantané, disons par exemple /etc/xdg, nous pouvons utiliser la syntaxe suivante :
sudo restic restore -r /mnt/restic-repo latest:/etc/xdg --target=/Notez que lorsqu’un répertoire est spécifié comme nous l’avons fait ci-dessus, seul son contenu est extrait, pas le répertoire lui-même. Nous pouvons également spécifier quels fichiers doivent être restaurés, en utilisant les options --include et --exclude, ou leurs équivalents insensibles à la casse : --iinclude et --iexclude. Pour extraire uniquement des fichiers avec l’extension « .conf », par exemple, nous exécuterions :
sudo restic restore -r /mnt/restic-repo latest --include=*.conf --target=/Conclusions
Dans ce tutoriel, nous avons appris à sauvegarder et restaurer des données avec Restic. Restic fonctionne de la même manière que Borg : il produit des instantanés dédupliqués compressés, cryptés et peu encombrants. Ici, nous avons vu comment initialiser et monter un dépôt et comment répertorier et restaurer le contenu des instantanés Restic. Pour des raisons évidentes, dans cet article, nous n’avons couvert que les concepts de base de Restic ; Pour en savoir plus sur ce merveilleux programme, veuillez jeter un coup d’œil à sa page de manuel ou visiter le site officiel du projet !
