{{tag>sysadmin sauvegarde backup}} ====== Sauvegarder avec restic ====== Principales caractéristiques de **restic** : * **Agnostic** : il existe sur les principaux systèmes d'exploitation : Linux, BSD, Mac et Windows ; * **Flexible** : il s'interface avec de nombreux systèmes de stockage auto-hébergés ou via les services en ligne ; * **Simple** : exécutable autonome sans dépendances de services ou de serveurs ; * **Efficace** : transfère uniquement les modifications ; * **Sécurisé** : intègre le chiffrement de bout en bout ; * **Auditable** : permet de vérifier que les fichiers seront restaurables au besoin ; * Open source et libre d'accès. ===== Démarrage rapide ===== 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 ==== Initialiser un dépôt ==== restic conserve les sauvegardes au sein d'un dépôt. On commence donc par en créer un : 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'option ''%%--repo%%'', on pourra définir une variable d'environnement : export RESTIC_REPOSITORY=/home/yoann/backups/restic-repo/ ==== Sauvegarder ==== On peut faire créer sa première sauvegarde : restic backup ~/Documents restic désigne snapshots vos sauvegardes. Pour lister les snapshots présents dans le dépot : restic snapshots On ajoute un nouveau fichier au dossier ''~/Documents'', puis on simule une sauvegarde (avec l' option ''%%--dry-run%%'') echo "Hello World!" > ~/Documents/aNewFile.txt restic backup ~/Documents/ --dry-run restic détecte bien le nouveau fichier et indique que seulement celui-ci sera copié. On peut faire une nouvelle sauvegarde : restic backup ~/Documents ==== Lister/rechercher dans le dépot ==== 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. Utiliser l'option ''%%--ignore-case%%'' pour changer le comportement par défaut. restic find --ignore-case "contrat*" latest ==== Restaurer ==== Par défaut la restauration reconstruit le chemin complet dans le répertoire destination (cible) : # le fichier et les dossiers parents sont recréés sur la destination (taget) 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 ''/tmp/home/yoann/Documents/wishlist.txt''. Pour ne pas reconstruire l'ensemble de l’arborescence et restaurer seulement le fichier dans le répertoire cible, 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'' : restic restore latest:/home/yoann/Documents --include factures --target /tmp/ Pour restaurer l'ensemble du snapshot : restic restore latest --target /tmp/ Lors de la restauration dans le répertoire cible, restic reconstruit l'arborescence complète jusqu'au fichier. ==== Supprimer un snapshot ==== La suppression s'effectue en deux temps via les commandes ''forget'' puis ''prune''. * La commande forget supprime les références vers les données mais pas les données-elles même qui restent dans le dépôt. Cette opération est rapide. * L'opération prune conduit à la suppression des données non référencées présentes dans le dépôt. Cette opération est plus longue et pendant qu'elle s'effectue, le dépôt n'est pas accessible. ''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. ==== Maintenance du dépôt ==== Il est recommandé de vérifier périodiquement l'état du dépôt : restic check restic check --read-data ===== Références ===== * https://restic.net/ * https://restic.readthedocs.io/en/stable/