Tutoriel

Tester la restauration d'une sauvegarde client : procédure agence

Sécurité & Monitoring11 min de lecture9 étapes

Une sauvegarde qui existe n'est pas une sauvegarde qui se relit, et la différence se découvre un jour d'incident, devant le client. Ce guide s'adresse aux agences qui gèrent un portefeuille de sites et doivent pouvoir répondre à « prouvez que vous savez restaurer ». Il décrit un exercice complet, humain et trimestriel, sur un VPS de test jetable : restauration depuis le dépôt réel, chronomètre du RTO, calcul du RPO constaté, puis journal daté remis au client. Le contrôle automatique par fichier sentinelle est traité ailleurs ; ici, on produit la preuve.

Sommaire· Ce test n'est pas le test automatique : ce qu'il ajoute1/13
  1. 01Ce test n'est pas le test automatique : ce qu'il ajoute
  2. 02Ce que l'exercice prouve et que la sauvegarde seule ne prouve pas
  3. 03Préparer le test : périmètre, machine jetable, effort
  4. 04La procédure en neuf étapes
  5. 05Le chronomètre : RTO et RPO constatés
  6. 06Le journal de test : champs à remplir
  7. 07Commandes de référence par outil
  8. 08Pièges de restauration, avec leur symptôme
  9. 09Dépannage : les erreurs vues pendant un exercice
  10. 10Le mot de passe du dépôt ne vit jamais seul sur le serveur
  11. 11Le journal remis au client : une page, et ce qui n'a pas été testé
  12. 12Côté contrat : ce que la clause de sauvegarde doit nommer
  13. 13Rendre le test facturable : un argument de vente, pas une charge

Ce test n'est pas le test automatique : ce qu'il ajoute

Le guide sur la stratégie 3-2-1 avec Restic et S3 décrit un contrôle automatique : un fichier sentinelle restauré chaque semaine, qui alerte quand la chaîne de sauvegarde casse. C'est utile et il faut le garder. Mais il répond à la question « le dépôt se lit-il ? », pas à « le site du client repart-il, et en combien de temps ? ». Restaurer un fichier de quelques octets ne dit rien d'une base de données, des fichiers téléversés, de la version de PHP attendue ou des secrets absents.

L'exercice de ce guide restaure un site entier, à la main, sur une machine neuve, et en tire trois mesures : une durée, un âge des données et une liste d'anomalies. Les deux dispositifs ne se concurrencent pas. Le contrôle automatique détecte la panne chaque semaine ; l'exercice trimestriel prouve la reprise, avec une signature et une date. C'est cette preuve qu'un client, un appel d'offres ou un audit finit par demander.

À ne pas confondre non plus avec le contrôle de restauration de la checklist d'audit mensuel d'un VPS client : celui-là vérifie chaque mois qu'un fichier ou une base se restaure ; l'exercice trimestriel de ce guide remet en route un site entier, chronomètre en main.

Ce que l'exercice prouve et que la sauvegarde seule ne prouve pas

  • Le dépôt se lit sans le serveur d'origine — la restauration part du dépôt distant, avec des secrets conservés ailleurs, jamais du disque du site.
  • Le site redémarre vraiment — la page d'accueil, la connexion à l'administration et le dernier contenu en base répondent sur la machine neuve.
  • Le RTO est mesuré, pas supposé — une durée constatée remplace l'estimation « à peu près une heure ».
  • Le RPO tient sa promesse — l'écart entre l'incident simulé et le snapshot restauré se compare à ce que le contrat annonce.
  • Les accès sont entre les bonnes mains — le test révèle qui détient réellement le mot de passe et les clés du dépôt.
  • Une preuve existe — un journal daté et signé, remis au client, sert d'argument de vente et de protection en cas de litige.

Préparer le test : périmètre, machine jetable, effort

Choisissez un site par client et par trimestre, en alternant les profils : un site adossé à une base de données, un autre aux fichiers téléversés volumineux, un troisième avec des tâches planifiées. Avant de commencer, rassemblez trois éléments hors du serveur du site : l'accès au dépôt, le mot de passe ou la clé qui l'ouvre, et la liste des secrets de l'application.

Louez ensuite un VPS de test jetable, avec le même système que la production, et prévoyez de le détruire en fin de séance. Pour l'effort, comptez à titre d'ordre de grandeur éditorial une demi-journée par trimestre pour un site type, davantage pour un dépôt volumineux, moins quand la procédure est rodée. Notez l'heure de début avant la première commande, jamais après.

La procédure en neuf étapes

  1. Fixer l'incident simulé

    Notez l'heure précise de l'incident simulé, par exemple la dernière écriture connue sur le site, et le périmètre à restaurer : fichiers, base de données, configuration. Cette heure sert au calcul du RPO.

  2. Créer le VPS de test

    Créez une machine neuve avec le même système d'exploitation que la production. Aucun fichier du site n'y arrive depuis le disque d'origine. Notez l'heure de début : c'est le départ du chronomètre du RTO.

  3. Installer l'outil et ouvrir le dépôt

    Installez seulement l'outil de sauvegarde et la pile du site (serveur web, PHP, base). Récupérez les accès dans votre coffre de mots de passe, jamais sur le serveur sinistré. restic -r <dépôt> snapshots doit lister les points de restauration.

  4. Choisir le snapshot

    Retenez le dernier snapshot antérieur à l'incident simulé et notez son identifiant et son horodatage. C'est lui qui fixe le RPO constaté.

  5. Restaurer les fichiers

    restic -r <dépôt> restore <id> --target /srv/restauration
    Puis déplacez le contenu vers le répertoire web. Avec Borg, placez-vous d'abord dans le dossier cible, car l'extraction écrit dans le répertoire courant : cd /srv/restauration && borg extract <dépôt>::<archive>.

  6. Restaurer la base de données

    pg_restore --create --dbname=postgres sauvegarde.dump
    Pour un dump texte, psql -f sauvegarde.sql. Comptez ensuite les lignes d'une table témoin (SELECT count(*) FROM commandes;) et comparez avec la valeur relevée en production avant le test.

  7. Reconstituer la configuration

    Remettez en place le fichier .env, les secrets, le vhost et les tâches planifiées depuis le coffre, puis alignez les versions de PHP et de la base sur celles de la production.

  8. Vérifier l'application

    Ouvrez la page d'accueil, connectez-vous à l'administration et repérez la dernière commande ou le dernier article en base. Sans toucher au DNS : curl -k --resolve votre-domaine.com:443:<IP_DU_VPS_DE_TEST> https://votre-domaine.com/.

  9. Arrêter le chronomètre et détruire la machine

    Arrêtez à la première requête applicative réussie, pas à la fin de la commande de restauration. Calculez le RTO et le RPO, remplissez le journal, puis détruisez le VPS de test.

Le chronomètre : RTO et RPO constatés

Le RTO constaté est l'heure de fin de restauration vérifiée moins l'heure de début du test. Le RPO constaté est l'écart entre l'heure de l'incident simulé et l'horodatage du snapshot restauré. Prenons un exemple fictif : incident simulé à 14 h 00, dernier snapshot pris à 03 h 00 le même jour, soit 11 heures de données perdues. Si le contrat promet 24 heures, c'est conforme ; s'il en promet 4, c'est non conforme, et le journal doit l'écrire tel quel.

Un RTO mesuré en test reste un plancher optimiste : machine neuve, personne n'attend, aucune pression. Il vaut pourtant mieux qu'un calcul de coin de table, surtout quand le dépôt est volumineux : sur un débit modeste, le temps de téléchargement suffit à rendre un RTO théorique irréaliste. Mesurez le débit réel au moment de la restauration et notez-le dans le journal.

Le journal de test : champs à remplir

Faites défiler le tableau

ChampCe qu'on y noteExemple
Date et siteJour du test et site client restauréJJ/MM/AAAA, site de démonstration
Outil et snapshotOutil de sauvegarde, identifiant et horodatage du snapshotRestic, identifiant court, horodatage complet
Durée et RTOHeure de début, heure de fin vérifiée, durée constatéeDébut 09 h 00, fin 10 h 40, RTO 1 h 40
RPO constatéÉcart entre l'incident simulé et le snapshot, comparé à la cible11 h constatées pour 24 h promises
AnomaliesTout ce qui a bloqué ou ralenti la repriseDossier d'uploads absent du périmètre
Correctif et échéanceAction, responsable et date de réalisationAjouter le dossier au dépôt, avant le prochain test
SignatairePersonne qui atteste le testNom, fonction, signature
Hors périmètreCe qui n'a pas été testéE-mails, DNS, certificats, services tiers

Commandes de référence par outil

Faites défiler le tableau

OutilLister les points de restaurationRestaurer et contrôler
Restic`restic -r <dépôt> snapshots``restic -r <dépôt> restore <id> --target /srv/restauration`
Restic, intégrité du dépôt`restic -r <dépôt> check``check` vérifie la structure ; `--read-data` relit tout le dépôt, `--read-data-subset=10%` une part au hasard
Borg`borg list <dépôt>`, puis `borg list <dépôt>::<archive>``borg extract --list <dépôt>::<archive>` depuis le dossier cible ; `--dry-run` lit et vérifie sans écrire
PostgreSQL, dump custom`pg_restore --list sauvegarde.dump``pg_restore --create --dbname=postgres sauvegarde.dump`, puis comptage d'une table témoin
PostgreSQL, dump texteVérifier la taille et la date du fichier`psql -f sauvegarde.sql`, puis comptage d'une table témoin
Fichiers uploadésComparer le nombre de fichiers du dépôt à la production`find /srv/restauration -type f | wc -l` puis ouverture de trois fichiers au hasard

Pièges de restauration, avec leur symptôme

  • Clé du dépôt stockée sur le serveur sinistré — la machine neuve n'ouvre pas le dépôt et affiche wrong password or no key found ; gardez la clé dans un coffre séparé, avec deux détenteurs.
  • Base restaurée, fichiers uploadés absents — le site s'affiche mais les images et pièces jointes répondent 404 ; le périmètre ne couvrait que la base ou que le code.
  • Version de PHP ou de base différente — page blanche, erreur de syntaxe ou de migration ; relevez les versions de chaque site dans le journal.
  • Secrets et .env non sauvegardés — l'application démarre mais ne joint plus la base, le serveur de courrier ni les API tierces.
  • Dépôt trop volumineux pour la bande passante — le RTO théorique paraît bon, le RTO réel dépasse la promesse ; mesurez le débit avant de promettre.
  • Dump tronqué — le nombre de lignes de la table témoin ne correspond pas à la production ; relancez la sauvegarde et contrôlez sa taille.
  • Tâches planifiées non recréées — le site répond mais n'envoie plus de courriels ni de rappels ; inventoriez les crons avant le test.

Dépannage : les erreurs vues pendant un exercice

Fatal: wrong password or no key found — Restic ne trouve aucune clé qui s'ouvre avec le mot de passe fourni. Causes fréquentes à écarter une à une : mot de passe saisi avec des caractères spéciaux altérés par le shell, mot de passe lu sur l'entrée standard, URL de dépôt S3 au mauvais style, fichier de clé abîmé. Essayez --password-file ou la variable RESTIC_PASSWORD, vérifiez l'URL du dépôt puis restic key list. Si le mot de passe est réellement perdu, les données du dépôt sont perdues avec lui : inscrivez-le en anomalie critique.

Aucun point de restauration récent — restic snapshots ne liste rien de la semaine : le job de sauvegarde s'arrête en silence. Corrigez le timer et ajoutez une alerte.

pg_restore se termine avec des erreurs ignorées — par défaut, il continue et affiche un décompte à la fin. Rejouez avec --exit-on-error pour vous arrêter à la première erreur, et lisez-la avant de déclarer le test réussi.

Les fichiers sont là mais le site répond 403 — la restauration en root a laissé les fichiers au mauvais propriétaire. Rendez-les à l'utilisateur du serveur web.

Le mot de passe du dépôt ne vit jamais seul sur le serveur

Conservez-le dans un coffre d'équipe, avec une copie scellée chez un second responsable. L'exercice commence par ouvrir le dépôt depuis ce coffre : si quelqu'un doit se connecter au serveur du site pour retrouver le mot de passe, le test est déjà en échec, et c'est l'anomalie la plus utile qu'il puisse révéler.

Le journal remis au client : une page, et ce qui n'a pas été testé

Le journal tient sur une page : en-tête avec client, site et date ; tableau des huit champs ; conclusion d'une phrase, conforme ou non aux cibles de RPO et de RTO ; plan correctif daté ; signature. Réservez un encart final « Non testé dans cet exercice » : boîtes e-mail et délivrabilité, DNS et délégation, certificats TLS, services tiers comme le paiement ou un CRM, et tout autre site du compte.

Un journal qui n'écrit pas ses limites se lit comme « tout est sauvegardé », et c'est la promesse qu'on ne peut pas tenir. Conservez les journaux de chaque trimestre : un seul test prouve un jour, une série prouve une pratique. Relevez aussi les versions de PHP de chaque site, comme dans le guide sur l'inventaire des versions d'un parc de clients : c'est le piège le plus fréquent au moment de rejouer.

Côté contrat : ce que la clause de sauvegarde doit nommer

Une clause utile nomme sept points : le périmètre (fichiers, bases, configuration), la fréquence, la rétention, les cibles de RPO et de RTO, la fréquence et la preuve des tests, la responsabilité si la restauration échoue, et la personne qui détient les accès au dépôt. Ce n'est pas un avis juridique : faites relire le texte par un juriste. Et ne promettez jamais ce que l'infrastructure sous-jacente ne garantit pas.

Sur ce point, les sauvegardes ServOrbit.com sont hebdomadaires en entrée de gamme, quotidiennes sur Pro et sur toutes les offres d'hébergement revendeur. Le RPO plancher se déduit de cette fréquence : jusqu'à sept jours avec une sauvegarde hebdomadaire, jusqu'à un jour avec une quotidienne. Un RPO de moins d'un jour exige donc une sauvegarde applicative propre à l'agence, en plus. Quant à la durée de restauration, aucun engagement ne se déduit d'une fréquence : elle se mesure, avec l'exercice ci-dessus.

Rendre le test facturable : un argument de vente, pas une charge

L'objection est connue : le client ne le demande pas, et le temps n'est pas facturé. Deux réponses. Intégrez au forfait de maintenance une ligne « test de restauration trimestriel, journal remis », ou facturez la demi-journée à part. Et considérez le journal comme un livrable : en cas d'incident, il montre ce qui avait été testé et corrigé ; en phase de vente, il répond à « prouvez-le » avant que la question soit posée.

Pour tenir le rythme sur un portefeuille, prévoyez une rotation : un site par client et par trimestre, calendrier fixé en début d'année. Le VPS de test se loue et se détruit à la demande ; les conditions figurent sur la page de l'offre.

Un portefeuille de sites, des preuves à fournir

Une agence qui doit prouver ses restaurations a besoin d'un seul endroit pour son portefeuille : domaines, hébergements et VPS d'essai jetables. L'espace agence ServOrbit.com centralise les services et les expirations : vous gardez la relation client, nous tenons l'infrastructure.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet