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.
-r
ou --repo
, ou en utilisant la variable d’environnement RESTIC_REPOSITORY
.
Table des matières
- Initialisation du dépôt
- Sauvegarde des données
- Gestion des snapshots
- Restauration des données
- Maintenance et nettoyage
- Vérification et inspection
- Commandes avancées
- Variables d’environnement
Initialisation du dépôt
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
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
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
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
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
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
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
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
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
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
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
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%
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
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
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
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
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 existantesadd
: Ajoute une nouvelle cléremove
: Supprime une clé existantepasswd
: 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
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écessairess3layout
: Migre la disposition du dépôt S3v2
: 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
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
Exemple :
restic -r /srv/restic-repo rebuild-index
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
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