Restic : sauvegardes avec chiffrement et historique
Comment configurer des sauvegardes avec chiffrement de bout en bout, déduplication et instantanés par date, les automatiser et vérifier leur intégrité.
Mis à jour le 23 août 2026
Restic résout ce que rsync ne peut pas faire : il chiffre les données avant l'envoi, conserve un historique d'instantanés, ne copie pas deux fois les mêmes blocs et peut stocker les sauvegardes dans un stockage compatible S3. Un seul programme, sans dépendances.
Installation et premier dépôt
sudo apt install -y restic
restic version
Un dépôt, c'est l'endroit où vivent vos sauvegardes. Il peut s'agir d'un répertoire, d'une machine via SFTP ou d'un stockage objet :
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
head -c 32 /dev/urandom | base64 > /root/.restic-pass
chmod 600 /root/.restic-pass
restic init
Le mot de passe du dépôt ne peut pas être récupéré. Si vous l'oubliez, vos données sont perdues — aucun support n'existe ici, par conception. Conservez-le séparément de la machine : dans un gestionnaire de mots de passe, sur papier, où vous voulez — mais pas uniquement dans le fichier
/root/.restic-passsur la machine même que vous sauvegardez.
Créer une sauvegarde
restic backup /var/www /etc/nginx /opt/myapp \
--exclude-file=/root/restic-exclude.txt \
--tag daily
restic snapshots
restic ls latest
restic stats
La deuxième exécution et les suivantes sont rapides : seuls les nouveaux blocs de données sont transférés.
Restaurer
restic restore latest --target /restore
restic restore <snapshot-id> --target /restore --include /var/www/uploads
Plus pratique encore : consulter le contenu sans tout décompresser.
mkdir /mnt/snapshots
restic mount /mnt/snapshots
Le répertoire affiche tous les instantanés par date sous forme de dossiers ordinaires. C'est la meilleure façon de récupérer un seul fichier supprimé par accident.
Planification et nettoyage
Le script /usr/local/bin/backup.sh :
#!/bin/bash
set -euo pipefail
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
docker compose -f /opt/myapp/compose.yaml exec -T db \
pg_dump -U postgres app | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc/nginx /opt/myapp /var/backups --tag daily
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
chmod 700 /usr/local/bin/backup.sh
Vient ensuite un timer systemd, voir tâches planifiées. forget --prune supprime les instantanés superflus et libère de l'espace ; sans --prune, les instantanés disparaissent de la liste mais les données restent.
Vérifications d'intégrité
restic check
restic check --read-data-subset=5%
La première commande vérifie la structure, la seconde lit une partie des données et contrôle les sommes de contrôle. Lancez la seconde une fois par mois : elle sollicite le disque et la bande passante, mais c'est elle qui détecte les corruptions silencieuses.
Une vérification de structure ne remplace pas une vraie restauration — voir exercice de restauration.
Ressources
Restic garde un index en mémoire : sur de gros volumes de données, cela représente des centaines de mégaoctets. Sur VDS-1 avec 2 Go de RAM, sauvegarder des dizaines de gigaoctets peut manquer de place — limitez le parallélisme ou déplacez les sauvegardes lourdes d'un cran au-dessus. La charge disque est notable, planifiez donc pour la nuit : voir vitesse du disque.
Erreurs courantes
- Le mot de passe est stocké uniquement sur la machine sauvegardée. Le classique : la machine est perdue en même temps que la clé des sauvegardes.
forgetsans--prune. L'espace n'est pas libéré et le dépôt ne cesse de grossir.- Une sauvegarde dans le même répertoire sur le même disque. Vous n'aurez nulle part où restaurer — voir sauvegardes à un autre emplacement.
- Les caches et
/var/lib/dockerne sont pas exclus. La sauvegarde gonfle de quatre fois sans aucun bénéfice ; la liste de ce qu'il faut inclure se trouve dans l'article que sauvegarder. - Exécutions parallèles. Une seconde exécution se heurtera au verrou du dépôt. Encapsulez l'appel dans
flock.