restic un programme en ligne de commande permettant de sauvegarder ses données.
Principales caractéristiques de restic :
Dans cet exemple, pour se familiariser avec les principales commandes, on utilise un dépôt local.
restic intègre une aide en ligne :
restic help
restic conserve les sauvegardes au sein d'un dépôt. On commence donc par en créer un via la commande init.
restic --repo /home/yoann/backups/restic-repo init
A la création du dépôt un mot de passe est demandé. Ce mot de passe est important, il sera nécessaire pour toute interaction avec le dépôt.
Pour ne pas avoir à systématiquement préciser le dépôt à utiliser via l'argument --repo, on pourra définir une variable d'environnement :
export RESTIC_REPOSITORY=/home/yoann/backups/restic-repo/ # Pour éviter de ressaisir le mot de passe export RESTIC_PASSWORD=MyVeryGooooodPassWord
On peut à présent créer sa première sauvegarde :
restic backup ~/Documents
restic désigne par “snapshots” vos sauvegardes. Pour lister les snapshots présents dans le dépôt :
restic snapshots
Certaines commandes peuvent être exécutés “à blanc” via l'option --dry-run. C'est le cas pour la sauvegarde.
On ajoute un nouveau fichier au dossier ~/Documents, puis on simule une sauvegarde (avec l' option --dry-run)
echo "Hello World!" > ~/Documents/aNewFile.txt # test la commande de sauvegarde restic backup ~/Documents/ --dry-run
restic détecte bien le nouveau fichier et indique que seulement celui-ci sera copié. On peut effectivement exécuter la sauvegarde :
restic backup ~/Documents
Pour lister l'ensemble des fichiers présents dans le snapshot le plus récent :
restic ls latest
Pour ne lister que le contenu d'un sous-dossier :
restic ls latest /home/yoann/Documents/factures
Pour rechercher un fichier dans les sauvegardes :
restic find "wishlist*" # rechercher uniquement dans le dernier snapshot resstic find "wishlist*" latest # rechercher uniquement dans les snapshot désignés restic find "wishlist*" 5e1ea3aa 4d22f100
La recherche est sensible à la casse de caractères mais on peut utiliser l'option --ignore-case pour changer ce comportement par défaut.
restic find --ignore-case "contrat*" latest
Par défaut la restauration reconstruit le chemin complet dans le répertoire de destination (cible) :
# le fichier et les dossiers parents sont recréés sur la destination (target) restic restore latest --include /home/yoann/Documents/wishlist.txt --target /tmp
Dans le cas présenté ci-dessus le dossier /tmp contiendra après exécution de la restauration /tmp/home/yoann/Documents/wishlist.txt.
Si l'on souhaite restaurer le fichier à son emplacement initial, on peut saisir :
restic restore latest --include /home/yoann/Documents/wishlist.txt --target /
Pour ne pas reconstruire l'ensemble de l’arborescence et restaurer seulement le fichier souhaité dans un répertoire cible différent, on peut utiliser la syntaxe :
restic restore latest:/home/yoann/Documents/ --include "wishlist.txt" --target /tmp
De la même manière, pour restaurer le dossier /home/yoann/Documents/factures et son contenu dans le répertoire cible /tmp sans recréer toute l'arborescence :
restic restore latest:/home/yoann/Documents --include factures --target /tmp/
Pour restaurer le dernier snapshot :
restic restore latest --target /
La suppression s'effectue en deux temps via les commandes forget puis prune.
forget et prune ont également une option d'exécution à blanc via l'argument --dry-run
restic forget latest --dry-run restic forget latest restic prune --dry-run
Après la commande prune on peut vouloir vérifier l'intégrité du dépôt.
Il est recommandé de vérifier périodiquement l'état du dépôt :
restic check
restic check --read-data