Pense-bête des commandes Restic : Guide complet pour vos sauvegardes

Restic est un outil de sauvegarde moderne, sécurisé et efficace qui permet de créer des sauvegardes incrémentales et chiffrées. Ce guide regroupe les commandes essentielles pour une utilisation quotidienne. Gardez-le à portée de main pour vous y référer facilement.

Note : Toutes les commandes restic nécessitent de spécifier le dépôt avec l’option -r ou --repo, ou en utilisant la variable d’environnement RESTIC_REPOSITORY.

Table des matières

Initialisation du dépôt

init

Initialise un nouveau dépôt de sauvegarde à l’emplacement spécifié.

restic init -r /chemin/vers/depot

Options importantes :

  • --password-file FICHIER : Lit le mot de passe depuis un fichier
  • --key-hint ID : ID de clé à essayer en premier

Exemple :

restic -r /srv/restic-repo init
restic -r sftp:user@host:/srv/restic-repo init
restic -r s3:bucket-name:/prefix init

Sauvegarde des données

backup

Crée un nouveau snapshot contenant les fichiers et répertoires spécifiés.

restic -r /chemin/vers/depot backup /chemin/a/sauvegarder

Options importantes :

  • --exclude MOTIF : Exclut les fichiers/dossiers correspondant au motif (peut être utilisé plusieurs fois)
  • --exclude-file FICHIER : Lit les motifs d’exclusion depuis un fichier
  • --exclude-caches : Exclut les répertoires de cache marqués avec un fichier CACHEDIR.TAG
  • --one-file-system : Ne traverse pas les limites du système de fichiers
  • --tag TAG : Ajoute des tags au snapshot
  • --host NOM : Définit le nom d’hôte manuellement
  • --stdin : Lit les données depuis l’entrée standard
  • --stdin-filename NOM : Définit le nom du fichier lors de la lecture depuis stdin
  • --stdin-from-command : Exécute la commande fournie et sauvegarde sa sortie
  • --force : Relit tous les fichiers à sauvegarder (désactive la détection de changement)
  • --dry-run : N’écrit aucune donnée, montre ce qui serait fait
  • --verbose ou -v : Mode verbeux, fournit plus d’informations
  • --skip-if-unchanged : Ignore la création d’un snapshot si identique au parent

Exemples :

# Sauvegarde de base
restic -r /srv/restic-repo backup ~/documents

# Sauvegarde avec exclusions
restic -r /srv/restic-repo backup --exclude="*.tmp" --exclude-file=exclure.txt ~/documents

# Sauvegarde avec tags
restic -r /srv/restic-repo backup --tag=quotidien --tag=important ~/documents

# Sauvegarde de la sortie d'une commande
restic -r /srv/restic-repo backup --stdin-filename=mysqldump.sql --stdin-from-command -- mysqldump --all-databases

Gestion des snapshots

snapshots

Liste tous les snapshots présents dans le dépôt.

restic -r /chemin/vers/depot snapshots

Options importantes :

  • --host HOTE : Filtre les snapshots par nom d’hôte
  • --tag TAG : Filtre les snapshots par tag
  • --path CHEMIN : Filtre les snapshots par chemin sauvegardé
  • --json : Affiche les résultats au format JSON
  • --compact : Format compact pour l’affichage
  • --latest N : Limite l’affichage aux N snapshots les plus récents

Exemples :

# Liste tous les snapshots
restic -r /srv/restic-repo snapshots

# Filtre par hôte et tag
restic -r /srv/restic-repo snapshots --host=serveur1 --tag=quotidien

# Affiche le dernier snapshot
restic -r /srv/restic-repo snapshots --latest=1
tag

Modifie les tags des snapshots existants.

restic -r /chemin/vers/depot tag [options] ID_SNAPSHOT

Options importantes :

  • --add TAG : Ajoute un tag (peut être utilisé plusieurs fois)
  • --remove TAG : Supprime un tag (peut être utilisé plusieurs fois)
  • --set TAG : Remplace tous les tags par celui-ci
  • --tag TAG : Filtre les snapshots à modifier par tag

Exemples :

# Ajouter un tag à un snapshot spécifique
restic -r /srv/restic-repo tag --add important 79766175

# Supprimer un tag de tous les snapshots ayant un tag spécifique
restic -r /srv/restic-repo tag --tag mensuel --remove obsolete

# Remplacer tous les tags d'un snapshot
restic -r /srv/restic-repo tag --set critique --set revue 79766175

Restauration des données

restore

Restaure les fichiers d’un snapshot à l’emplacement spécifié.

restic -r /chemin/vers/depot restore ID_SNAPSHOT --target /chemin/cible

Options importantes :

  • --target RÉPERTOIRE : Répertoire cible pour la restauration
  • --include MOTIF : Inclut uniquement les fichiers correspondant au motif
  • --exclude MOTIF : Exclut les fichiers correspondant au motif
  • --include-file FICHIER : Lit les motifs d’inclusion depuis un fichier
  • --exclude-file FICHIER : Lit les motifs d’exclusion depuis un fichier
  • --overwrite MODE : Spécifie comment gérer les fichiers existants (always, if-changed, if-newer, never)
  • --sparse : Restaure les fichiers sous forme sparse si possible
  • --verbose ou -v : Mode verbeux
  • --dry-run : N’écrit aucune donnée, montre ce qui serait fait

Vous pouvez utiliser latest comme ID de snapshot pour restaurer le plus récent.

Exemples :

# Restaurer le dernier snapshot
restic -r /srv/restic-repo restore latest --target /tmp/restauration

# Restaurer un snapshot spécifique
restic -r /srv/restic-repo restore 79766175 --target /tmp/restauration

# Restaurer un seul fichier
restic -r /srv/restic-repo restore latest --include /path/to/file.txt --target /tmp/restauration

# Restaurer avec simulation
restic -r /srv/restic-repo restore latest --target /tmp/restauration --dry-run -vv
dump

Affiche le contenu d’un fichier sauvegardé vers la sortie standard.

restic -r /chemin/vers/depot dump ID_SNAPSHOT CHEMIN_FICHIER > fichier_restauré

Options importantes :

  • --archive FORMAT ou -a FORMAT : Format d’archive pour les dossiers (tar, zip)
  • --target FICHIER : Écrit la sortie dans un fichier spécifique

Exemples :

# Afficher un fichier texte
restic -r /srv/restic-repo dump latest /config/settings.conf

# Rediriger vers un fichier
restic -r /srv/restic-repo dump latest /database/dump.sql > dump_restauré.sql

# Restaurer un dossier au format tar
restic -r /srv/restic-repo dump latest /home/user/documents > documents.tar

# Restaurer avec un format spécifique
restic -r /srv/restic-repo dump -a zip latest /home/user/documents > documents.zip
mount

Monte le dépôt comme un système de fichiers pour accéder facilement aux données sauvegardées.

restic -r /chemin/vers/depot mount /point/de/montage

Options importantes :

  • --allow-other : Permet aux autres utilisateurs d’accéder au point de montage
  • --snapshot-template MODELE : Template pour les noms des snapshots
  • --host HOTE : Filtre les snapshots par nom d’hôte
  • --tag TAG : Filtre les snapshots par tag
  • --path CHEMIN : Filtre les snapshots par chemin

Note : Nécessite FUSE sur Linux/macOS ou WinFsp sur Windows.

Exemples :

# Monter le dépôt
restic -r /srv/restic-repo mount /mnt/restic

# Monter uniquement les snapshots d'un hôte spécifique
restic -r /srv/restic-repo mount --host=serveur1 /mnt/restic

Maintenance et nettoyage

forget

Supprime des snapshots du dépôt selon des critères définis.

restic -r /chemin/vers/depot forget [options] [ID_SNAPSHOT]

Options importantes :

  • --keep-last N : Conserve les N derniers snapshots
  • --keep-hourly N : Conserve N snapshots horaires
  • --keep-daily N : Conserve N snapshots quotidiens
  • --keep-weekly N : Conserve N snapshots hebdomadaires
  • --keep-monthly N : Conserve N snapshots mensuels
  • --keep-yearly N : Conserve N snapshots annuels
  • --keep-within DUREE : Conserve tous les snapshots dans l’intervalle de temps spécifié (ex: 2y5m7d3h)
  • --keep-tag : Conserve les snapshots avec le tag spécifié
  • --host HOTE : Applique la stratégie uniquement aux snapshots de cet hôte
  • --tag TAG : Applique la stratégie uniquement aux snapshots avec ce tag
  • --path CHEMIN : Applique la stratégie uniquement aux snapshots contenant ce chemin
  • --group-by CRITERES : Groupe les snapshots par critères (host, paths, tags)
  • --dry-run : N’effectue aucune suppression, montre ce qui serait fait
  • --prune : Lance automatiquement la commande prune après forget

Exemples :

# Supprimer un snapshot spécifique
restic -r /srv/restic-repo forget 79766175

# Conserver uniquement les 7 derniers snapshots quotidiens
restic -r /srv/restic-repo forget --keep-daily 7 --prune

# Politique de rétention complète
restic -r /srv/restic-repo forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --keep-yearly 2 --prune

# Simuler une politique de rétention
restic -r /srv/restic-repo forget --keep-last 10 --dry-run
prune

Supprime les données qui ne sont plus référencées par aucun snapshot.

restic -r /chemin/vers/depot prune

Options importantes :

  • --max-unused TAILLE : Autorise jusqu’à cette quantité de données inutilisées (ex: 5%, 200M, unlimited)
  • --max-repack-size TAILLE : Limite la taille totale des fichiers à regrouper
  • --repack-cacheable-only : Ne regroupe que les fichiers qui contiennent des métadonnées
  • --repack-small : Regroupe également les fichiers de petite taille
  • --dry-run : N’effectue aucune suppression, montre ce qui serait fait
  • --verbose ou -v : Mode verbeux
Attention : L’opération prune peut être longue et verrouille le dépôt. Planifiez-la pour qu’elle n’interfère pas avec vos sauvegardes régulières.

Exemples :

# Nettoyage standard
restic -r /srv/restic-repo prune

# Simulation de nettoyage
restic -r /srv/restic-repo prune --dry-run -v

# Nettoyage avec options personnalisées
restic -r /srv/restic-repo prune --max-unused 1% --max-repack-size 2G

Vérification et inspection

check

Vérifie l’intégrité du dépôt et de ses données.

restic -r /chemin/vers/depot check

Options importantes :

  • --read-data : Lit toutes les données du dépôt et vérifie leur intégrité
  • --read-data-subset POURCENTAGE : Vérifie un sous-ensemble aléatoire des données
  • --check-unused : Vérifie les blobs non utilisés
  • --with-cache : Vérifie aussi le cache
Conseil : Exécutez régulièrement un check pour vous assurer que vos sauvegardes sont valides, spécialement après un prune.

Exemples :

# Vérification de la structure du dépôt
restic -r /srv/restic-repo check

# Vérification complète incluant les données
restic -r /srv/restic-repo check --read-data

# Vérification rapide d'un échantillon de données
restic -r /srv/restic-repo check --read-data-subset 10%
find

Recherche des fichiers ou répertoires dans les snapshots.

restic -r /chemin/vers/depot find [MOTIF]

Options importantes :

  • --snapshot ID : Limite la recherche à un snapshot spécifique
  • --ignore-case : Ignore la casse lors de la recherche
  • --host HOTE : Filtre par hôte
  • --path CHEMIN : Filtre par chemin
  • --tag TAG : Filtre par tag

Exemples :

# Rechercher un fichier dans tous les snapshots
restic -r /srv/restic-repo find important.txt

# Rechercher avec un motif et ignorer la casse
restic -r /srv/restic-repo find --ignore-case "*.conf"

# Rechercher dans un snapshot spécifique
restic -r /srv/restic-repo find --snapshot 79766175 config.json
ls

Liste les fichiers d’un snapshot.

restic -r /chemin/vers/depot ls ID_SNAPSHOT [CHEMIN]

Options importantes :

  • --long ou -l : Format d’affichage détaillé
  • --recursive ou -r : Liste récursivement les répertoires
  • --host HOTE : Filtre par hôte
  • --path CHEMIN : Filtre par chemin (à utiliser avec latest)

Exemples :

# Lister le contenu d'un snapshot
restic -r /srv/restic-repo ls latest

# Lister un sous-répertoire spécifique
restic -r /srv/restic-repo ls latest /home/user/documents

# Affichage détaillé et récursif
restic -r /srv/restic-repo ls -lr latest /etc

# Lister le dernier snapshot contenant un chemin spécifique
restic -r /srv/restic-repo ls --path /home/user/documents latest
diff

Affiche les différences entre deux snapshots.

restic -r /chemin/vers/depot diff ID_SNAPSHOT1 ID_SNAPSHOT2

Options importantes :

  • --metadata : Inclut les différences de métadonnées

Exemples :

# Comparer deux snapshots
restic -r /srv/restic-repo diff 79766175 40dc1520

# Comparer en incluant les métadonnées
restic -r /srv/restic-repo diff --metadata 79766175 40dc1520

# Comparer uniquement un sous-répertoire
restic -r /srv/restic-repo diff 79766175:/home/user 40dc1520:/home/user
stats

Affiche des statistiques sur les snapshots.

restic -r /chemin/vers/depot stats [ID_SNAPSHOT]

Options importantes :

  • --mode MODE : Mode de calcul (restore-size, files-by-contents, raw-data, blobs-per-file)
  • --host HOTE : Filtre par hôte
  • --tag TAG : Filtre par tag

Exemples :

# Statistiques du dernier snapshot
restic -r /srv/restic-repo stats latest

# Statistiques des données brutes
restic -r /srv/restic-repo stats --mode raw-data latest

# Statistiques pour un hôte spécifique
restic -r /srv/restic-repo stats --host=serveur1 latest

Commandes avancées

key

Gère les clés (mots de passe) du dépôt.

restic -r /chemin/vers/depot key [sous-commande]

Sous-commandes :

  • list : Liste les clés existantes
  • add : Ajoute une nouvelle clé
  • remove : Supprime une clé existante
  • passwd : Change le mot de passe d’une clé

Exemples :

# Lister les clés
restic -r /srv/restic-repo key list

# Ajouter une nouvelle clé
restic -r /srv/restic-repo key add

# Changer le mot de passe
restic -r /srv/restic-repo key passwd
migrate

Applique des migrations sur le dépôt.

restic -r /chemin/vers/depot migrate [options]

Options importantes :

  • check : Vérifie si des migrations sont nécessaires
  • s3layout : Migre la disposition du dépôt S3
  • v2 : Migre vers le format de dépôt v2 (avec compression)

Exemples :

# Vérifier si des migrations sont nécessaires
restic -r /srv/restic-repo migrate check

# Migrer vers le format v2
restic -r /srv/restic-repo migrate v2
rebuild-index

Reconstruit l’index du dépôt.

restic -r /chemin/vers/depot rebuild-index

Options importantes :

  • --read-all-packs : Lit tous les packs pour reconstruire l’index
Attention : Cette commande est utile après des erreurs ou des interruptions lors d’une opération, mais n’est généralement pas nécessaire en usage normal.

Exemple :

restic -r /srv/restic-repo rebuild-index
copy

Copie des snapshots d’un dépôt à un autre.

restic -r /source copy --repo2 /destination [ID_SNAPSHOT]

Options importantes :

  • --repo2 : Spécifie le dépôt de destination
  • --password-file2 : Fichier de mot de passe pour le second dépôt
  • --host HOTE : Filtre par hôte
  • --tag TAG : Filtre par tag
  • --path CHEMIN : Filtre par chemin

Exemples :

# Copier un snapshot spécifique
restic -r /srv/restic-repo1 copy --repo2 /srv/restic-repo2 79766175

# Copier tous les snapshots d'un hôte
restic -r /srv/restic-repo1 copy --repo2 /srv/restic-repo2 --host=serveur1
cache

Gère le cache local de restic.

restic cache --cleanup

Sous-commandes :

  • --cleanup : Nettoie le cache pour libérer de l’espace

Exemple :

restic cache --cleanup

Variables d’environnement

Restic prend en charge plusieurs variables d’environnement pour simplifier l’utilisation :

Variable Description
RESTIC_REPOSITORY Emplacement du dépôt (remplace -r)
RESTIC_PASSWORD Mot de passe pour le dépôt
RESTIC_PASSWORD_FILE Chemin vers un fichier contenant le mot de passe
RESTIC_PASSWORD_COMMAND Commande qui produit le mot de passe sur stdout
RESTIC_CACHE_DIR Répertoire pour le cache de restic
RESTIC_COMPRESSION Mode de compression (auto, off, max)
RESTIC_PROGRESS_FPS Fréquence de mise à jour de la barre de progression
RESTIC_HOST Nom d’hôte à utiliser pour les snapshots
RESTIC_READ_CONCURRENCY Nombre de fichiers à lire en parallèle

Astuce : Pour les backends spécifiques comme S3, Azure, B2, etc., consultez la documentation officielle pour les variables d’environnement supplémentaires.

Automatisation et bonnes pratiques

Script de sauvegarde périodique

Voici un exemple de script shell pour effectuer des sauvegardes automatiques :

#!/bin/bash

# Configuration
export RESTIC_REPOSITORY="/srv/restic-repo"
export RESTIC_PASSWORD_FILE="/chemin/vers/mot-de-passe.txt"

# Sauvegarde
restic backup /home/user/documents /etc /var/www \
  --tag "quotidien" \
  --exclude "*.tmp" \
  --exclude-caches

# Politique de rétention
restic forget \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 6 \
  --prune

# Vérification périodique (1 fois par semaine)
if [ "$(date +%u)" -eq 7 ]; then
  restic check
fi

Bonnes pratiques

  • Exécutez régulièrement restic check pour vérifier l’intégrité de votre dépôt
  • Utilisez des mots de passe forts et stockez-les en toute sécurité
  • Planifiez prune en dehors des heures de sauvegarde
  • Utilisez des tags pour organiser vos snapshots
  • Testez régulièrement la restauration
  • Conservez plusieurs dépôts pour les données critiques

Ce pense-bête est basé sur la documentation de Restic version 0.18.0.

Pour plus d’informations, consultez la documentation officielle.