Restic est un logiciel libre de sauvegarde qui offre toutes les fonctionnalités qu'on attend d'un logiciel de sauvegarde moderne : incrémentation1), chiffrement2), compression, déduplication3), etc.
Il permet de sauvegarder sur :
Il s'utilise initialement en ligne de commande mais il existe diverses interfaces graphiques.
Il est relativement proche de Borg Backup d'un point de vue utilisation et performances, mais ne nécessite aucun logiciel côté dépôt (serveur), ce qui le rend particulièrement versatile. Il utilise aussi son propre format de fichier ce qui a l'inconvénient de ne pas rendre les fichiers stockés dans les dépôts accessibles avec n'importe quel outil, mais qui a aussi et surtout l'avantage de permettre le chiffrement, la compression, la déduplication, et la sauvegarde des permissions et dates des fichiers quel que soit le système de fichier sous-jacent ou le protocole d'échange utilisé.
Restic est disponible dans les dépôts officiels d'Ubuntu.
Pour l'installer il suffit donc d'installer le paquet restic.
Une fois installé, on peut mettre à jour le logiciel à sa dernière version stable très simplement grâce à la commande self-update
:
sudo restic self-update
Restic ne s'utilise qu'en ligne de commande, et ne propose pas directement de configuration.
On peut tout de même automatiser son utilisation en configurant des tâches systemd ou cron
Il existe aussi de nombreux wrappers qui permettent d'étendre les fonctionnalités de restic, par exemple justement en implémentant des fichiers de configuration pour faciliter son utilisation et automatiser les sauvegardes.
Dans le cadre de l'utilisation native de restic, on peut afficher la liste des commandes disponibles en tapant simplement restic
dans un terminal.
Restic permet de réaliser toutes sortes d'opérations mais on utilisera principalement init
pour créer un dépôt lors de la première configuration, puis régulièrement la commande backup
pour déclencher chaque sauvegarde. Comme on peut conserver plusieurs versions des fichiers sauvegardés à différents moments (voir sauvegarde incrémentielle), pour désigner les sauvegardes en parle aussi d'instantanés (ou snapshots en anglais).
Le paramètre -r
(ou --repo
en version longue) est très important : il permet de spécifier le dépôt (Repository en anglais) sur lequel on souhaite travailler.
Voir aussi (en) le guide d'utilisation, avec des instructions détaillées pour chaque fournisseur.
Pour commencer à utiliser restic il faut en premier lieu initialiser un dépôt avec la commande restic init
. C'est sur celui-ci qu'on effectuera les sauvegardes. Sur le dépôts les sauvegardes sont organisées par chemin local (celui des données qu'on sauvegarde, sur la machine locale) et nom d'hôte (le nom de la machine locale). On peut donc sauvegarder plusieurs fois un chemin similaire depuis différentes machines sur un même dépôt sans risque de tout mélanger.
Entrez la commande suivante dans un terminal :
restic -r sftp:serveur:/chemin/restic-repo init
Adaptez sftp:serveur:/chemin/restic-repo
selon votre solution de stockage distant :
sftp:
selon le protocole choisi, ou rclone:
pour un dépôt rclone, puis serveur:
pour le nom d'hôte.
C'est la commande restic backup
qui permet de délencher une sauvegarde.
En ligne de commande, restic s'utilise un peu comme rsync ou rclone.
restic -r sftp:serveur:/chemin/restic-repo backup /chemin
Commande à adapter comme init
précédemment :
-r
pour spécifier le dépôt sur lequel on souhaite travailler./chemin
est celui du répertoire à sauvegarder.--exclude
pour exclure certains fichiers ou répertoires,--dry-run
pour lancer un test sans effectuer réellement la sauvegarde.La première fois qu'on lance cette commande, l'intégralité des données est compressée et sauvegardée. Par la suite avec la même commande on ne transfère que les données qui ont été modifiées, c'est donc beaucoup plus rapide.
La commande restic snapshots
permet de lister les instantanés :
restic -r sftp:serveur:/chemin/restic-repo snapshots
Cette commande retourne un tableau dont la première colonne indique l'identifiant de chaque instantané.
On peut explorer les sauvegardes en montant le dépôt, ou avec une interface graphique telle que Restic Browser, ou avec la commande ls
qu'implémente restic :
restic -r sftp:serveur:/chemin/restic-repo ls latest /
latest
(pour explorer le dernier instantané) par un identifiant récupéré grâce à la commande snapshots
précédente./
est le répertoire qu'on souhaite lister, ici la racine de cette sauvegarde. Ne pas indiquer de chemin permet de lister l'intégralité des fichiers sauvegardés où qu'ils se trouvent dans cet instantané.
À partir de la version 0.17 il est possible d'utiliser la commande ncdu
(après avoir installé localement le paquet ncdu
) pour explorer l'espace occupé par chaque répertoire dans un instantané :
restic -r sftp:serveur:/chemin/restic-repo ls latest --ncdu | ncdu -f -
La commande restic restore
permet de restaurer n'importe quel instantané précis.
restic -r sftp:serveur:/chemin/restic-repo restore identifiant_instantané --target /chemin
identifiant_instantané
est un numéro à 8 chiffres hexadécimaux, récupéré en listant les sauvegardes avec la commande snapshots
(voir chapitre précédent)./chemin
n'est ici pas celui du contenu sauvegardé, mais celui vers lequel on veut restaurer la sauvegarde.On peut ainsi restaurer n'importe quelle sauvegarde à l'emplacement de son choix.
On peut aussi monter l'intégralité d'un dépôt en système local grâce à FUSE afin d'explorer ses sauvegardes avec le gestionnaire de fichiers de son choix, à commencer par GNOME Fichiers sur Ubuntu.
Il faut pour cela créer un répertoire - ici /mnt/restic
- et s'autoriser à le modifier :
sudo mkdir /mnt/restic sudo chown $USER:$GROUP /mnt/restic
C'est ensuite la commande restic mount
qui nous permettra de monter le dépôt :
restic -r sftp:serveur:/chemin/restic-repo mount /mnt/restic
Après quelques secondes, sous le chemin /mnt/restic
devraient se trouver les répertoires suivants :
hosts
contient la liste des instantanés triés par noms d'hôtes sauvegardés,ids
contient la liste des instantanés triés par identifiant (voir § Explorer les sauvegardes),snapshots
les liste par date,tags
(étiquettes en français) est utile si on utilise cette fonctionnalité.Vous pouvez ainsi explorer vos sauvegardes avec l'outil de votre choix et copier-coller n'importe quel contenu pour le restaurer où vous voulez.
Pour terminer le montage, appuyez sur la touche C
en laissant enfoncé la touche Ctrl
dans la fenêtre de terminal que vous venez d'utiliser.
Il existe de nombreuses interfaces graphiques permettant d'utiliser et d'explorer facilement les dépôts restic ;
Voir cette liste plus complète.
Les wrappers4) permettent d'étendre les fonctionnalités de restic en l'utilisant comme "moteur" sous-jacent plus ou moins visible.
Voir aussi cette liste plus complète.
Contributeur : krodelabestiole