# Restic pour sauvegarder vos sites WordPress avec déduplication et chiffrement

> Plutôt qu'une archive complète à chaque sauvegarde, Restic ne renvoie que les blocs modifiés, chiffrés, avec un historique de versions consultable.

- Auteur : Clément Hadrot
- Publié le : 2021-08-10
- Mis à jour le : 2021-08-10
- Catégorie : Outils &amp; workflow
- URL : https://wpmoderne.dev.wordpress-developpement.fr/outils/restic-sauvegarder-wordpress-deduplication-chiffrement/

## L’essentiel

- Sauvegardes incrémentales par blocs, pas par fichier entier
- Chiffrement intégré avant tout transfert
- Historique de versions consultable et restaurable

Une archive complète du site à chaque sauvegarde, envoyée telle quelle vers un espace de stockage distant : c'est la méthode la plus simple à mettre en place, et aussi la plus coûteuse à l'usage. Sur un site WordPress avec une bibliothèque de médias de plusieurs gigaoctets, renvoyer l'intégralité de ces fichiers chaque nuit alors qu'à peine quelques images ont changé depuis la veille gaspille de la bande passante, de l'espace de stockage, et du temps de sauvegarde.

Restic répond précisément à ce problème par la déduplication : il découpe les fichiers en blocs, calcule une empreinte pour chaque bloc, et ne transfère que les blocs qui n'existent pas déjà dans le dépôt de sauvegarde. Une image inchangée depuis la dernière sauvegarde ne sera jamais retransférée, même si elle fait plusieurs mégaoctets.

## Initialiser un dépôt Restic

Restic fonctionne avec un système de « repository » qui peut être un simple dossier local, un serveur SFTP, ou un espace de stockage compatible S3. L'initialisation crée la structure de chiffrement du dépôt :

```
export RESTIC_REPOSITORY="s3:https://s3.exemple.fr/backups-wordpress"
export RESTIC_PASSWORD="une-phrase-de-passe-solide"

restic init
```

Cette phrase de passe chiffre l'intégralité des données avant tout envoi : même si le stockage distant est compromis, les fichiers de sauvegarde restent illisibles sans cette clé. Contrairement à une sauvegarde simplement copiée sur un espace S3 sans chiffrement côté client, Restic garantit que le fournisseur de stockage lui-même n'a jamais accès aux données en clair.

## Lancer une sauvegarde

> L'essentiel à retenir : Sauvegardes incrémentales par blocs, pas par fichier entier ; Chiffrement intégré avant tout transfert ; Historique de versions consultable et restaurable

```
wp db export - | restic backup --stdin --stdin-filename dump.sql
restic backup /var/www/monsite/wp-content
```

La première commande exporte la base de données directement dans Restic sans passer par un fichier intermédiaire sur le disque, en utilisant l'option `--stdin`. La seconde sauvegarde le dossier `wp-content`, qui contient les médias, les thèmes et les extensions.

## Automatiser avec une tâche planifiée

```
# crontab -e
0 3 * * * /usr/local/bin/backup-wordpress.sh >> /var/log/restic-backup.log 2>&1
```

Le script appelé peut enchaîner l'export de base, la sauvegarde des fichiers, puis un nettoyage automatique des anciennes sauvegardes via la politique de rétention de Restic :

```
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
```

## Restaurer une sauvegarde

L'historique de versions de Restic permet de lister les sauvegardes disponibles et de restaurer un instantané précis, pas uniquement le plus récent :

```
restic snapshots
restic restore a1b2c3d4 --target /tmp/restauration
```

Cette capacité à revenir à un instantané spécifique, pas seulement au dernier en date, est précieuse quand un problème (contenu corrompu, extension malveillante) n'est détecté que plusieurs jours après son apparition.

## Vérifier l'intégrité du dépôt

Une sauvegarde qui n'est jamais vérifiée n'est qu'une hypothèse de sauvegarde. Restic propose une commande de vérification qui contrôle que les données stockées correspondent bien à leurs empreintes, sans attendre une restauration réelle pour découvrir un problème :

```
restic check
```

> La règle qu'on applique systématiquement : une sauvegarde n'est validée que le jour où sa restauration a été testée au moins une fois, en conditions réelles, pas seulement supposée fonctionnelle parce que la commande s'est terminée sans erreur.

## Restic face à une sauvegarde WP-CLI vers S3 classique

- Une sauvegarde WP-CLI classique vers S3 envoie généralement une archive complète ou incrémentale par fichier entier, sans déduplication au niveau du bloc : un fichier modifié d'un octet est retransféré intégralement.
- Restic chiffre les données avant l'envoi, alors qu'une sauvegarde S3 simple dépend du chiffrement côté serveur du fournisseur, potentiellement absent ou mal configuré.
- Restic gère nativement les rétentions par période (quotidienne, hebdomadaire, mensuelle) sans script additionnel pour supprimer les anciennes archives.

## Notre verdict

Sur un parc de sites WordPress avec des bibliothèques de médias volumineuses, la déduplication par blocs de Restic change concrètement la facture de stockage et le temps de sauvegarde quotidien : après la première sauvegarde complète, les exécutions suivantes ne transfèrent souvent qu'une fraction des données totales. Le chiffrement intégré et l'historique de versions consultable en font un outil plus robuste qu'un simple envoi d'archive vers un espace S3, pour un coût de mise en place qui reste raisonnable une fois le premier script écrit.
