diff --git a/docs/RESTORE-TESTING.md b/docs/RESTORE-TESTING.md new file mode 100644 index 0000000..922d1dc --- /dev/null +++ b/docs/RESTORE-TESTING.md @@ -0,0 +1,714 @@ +# Guide de test de restauration Borgmatic + +> **"Un backup non testé n'est pas un backup"** + +Ce guide décrit comment tester vos backups Borgmatic pour garantir que vos données sont restaurables en cas de sinistre. + +## Table des matières + +- [Pourquoi tester ?](#pourquoi-tester) +- [Pré-requis](#pré-requis) +- [Niveau 1 : Test rapide (mensuel)](#niveau-1--test-rapide-mensuel) +- [Niveau 2 : Test de service (trimestriel)](#niveau-2--test-de-service-trimestriel) +- [Niveau 3 : Disaster Recovery complet (semestriel)](#niveau-3--disaster-recovery-complet-semestriel) +- [Scénarios de restauration courants](#scénarios-de-restauration-courants) +- [Checklist de vérification](#checklist-de-vérification) +- [Troubleshooting](#troubleshooting) + +--- + +## Pourquoi tester ? + +### Risques sans test de restauration + +- ❌ Backup corrompu découvert trop tard +- ❌ Passphrase incorrecte ou perdue +- ❌ Clés SSH manquantes ou expirées +- ❌ Fichiers critiques exclus par erreur +- ❌ Permissions/ownership incorrects +- ❌ Temps de restauration inconnu (RTO) +- ❌ Procédure non documentée + +### Bénéfices des tests réguliers + +- ✅ Confiance totale dans vos backups +- ✅ Procédure éprouvée et documentée +- ✅ Temps de restauration mesuré +- ✅ Détection précoce des problèmes +- ✅ Équipe formée en conditions réelles + +--- + +## Pré-requis + +### Informations nécessaires + +Assurez-vous d'avoir accès à : + +```bash +# Variables d'environnement +BORG_REPO=ssh://USER@IP:PORT/./backups +BORG_PASSPHRASE=votre-passphrase-sécurisée + +# Clés SSH +~/.ssh/id_rsa (ou clé configurée pour le serveur de backup) +``` + +### Vérifications préliminaires + +```bash +# 1. Vérifier la connexion au repository +make info + +# 2. Lister les archives disponibles +make list + +# 3. Vérifier l'intégrité du repository +make check +``` + +--- + +## Niveau 1 : Test rapide (mensuel) + +**Durée estimée :** 5-10 minutes +**Fréquence recommandée :** Tous les mois +**Objectif :** Vérifier que la restauration fonctionne + +### Procédure + +#### 1. Créer un environnement de test + +```bash +# Créer un dossier de test avec horodatage +TEST_DIR="/tmp/restore-test-$(date +%Y%m%d-%H%M)" +mkdir -p "$TEST_DIR" +cd "$TEST_DIR" +``` + +#### 2. Restaurer quelques fichiers critiques + +```bash +# Restaurer la configuration Borgmatic +borgmatic extract \ + --archive latest \ + --path /etc/borgmatic/config.yaml \ + --destination "$TEST_DIR/" + +# Restaurer un fichier Nextcloud +borgmatic extract \ + --archive latest \ + --path /opt/nextcloud/config/config.php \ + --destination "$TEST_DIR/" + +# Restaurer un fichier de configuration système +borgmatic extract \ + --archive latest \ + --path /etc/nginx/nginx.conf \ + --destination "$TEST_DIR/" +``` + +#### 3. Vérifier les fichiers restaurés + +```bash +# Vérifier que les fichiers existent +ls -lh "$TEST_DIR/etc/borgmatic/" +ls -lh "$TEST_DIR/opt/nextcloud/config/" + +# Comparer avec l'original (si toujours accessible) +diff /etc/borgmatic/config.yaml "$TEST_DIR/etc/borgmatic/config.yaml" + +# Vérifier le contenu +cat "$TEST_DIR/etc/borgmatic/config.yaml" +``` + +#### 4. Nettoyer + +```bash +# Supprimer le dossier de test +rm -rf "$TEST_DIR" +echo "✅ Test rapide terminé avec succès" +``` + +### Checklist de validation + +- [ ] Les fichiers ont été restaurés sans erreur +- [ ] Le contenu des fichiers est correct +- [ ] Les permissions semblent correctes +- [ ] Aucun message d'erreur dans les logs + +--- + +## Niveau 2 : Test de service (trimestriel) + +**Durée estimée :** 30-60 minutes +**Fréquence recommandée :** Tous les 3 mois +**Objectif :** Vérifier la restauration complète d'un service + +### Scénario : Restaurer Nextcloud complet + +#### 1. Préparer l'environnement + +```bash +TEST_DIR="/tmp/restore-nextcloud-$(date +%Y%m%d)" +mkdir -p "$TEST_DIR" +``` + +#### 2. Restaurer Nextcloud + +```bash +# Restaurer tous les fichiers Nextcloud +borgmatic extract \ + --archive latest \ + --path /opt/nextcloud \ + --destination "$TEST_DIR/" + +# Chronométrer la restauration +time borgmatic extract \ + --archive latest \ + --path /opt/nextcloud \ + --destination "$TEST_DIR/" +``` + +#### 3. Vérifier la restauration + +```bash +# Vérifier la taille totale +du -sh "$TEST_DIR/opt/nextcloud/" + +# Comparer avec la production +du -sh /opt/nextcloud/ + +# Vérifier la structure +tree -L 2 "$TEST_DIR/opt/nextcloud/" + +# Vérifier les fichiers de configuration +cat "$TEST_DIR/opt/nextcloud/config/config.php" + +# Vérifier quelques fichiers utilisateurs +ls -lh "$TEST_DIR/opt/nextcloud/data/" + +# Vérifier les permissions +ls -la "$TEST_DIR/opt/nextcloud/" +``` + +#### 4. Tests approfondis + +```bash +# Compter les fichiers +find "$TEST_DIR/opt/nextcloud/" -type f | wc -l +find /opt/nextcloud/ -type f | wc -l + +# Vérifier les bases de données (si incluses) +ls -lh "$TEST_DIR/opt/nextcloud/data/"*.db + +# Tester l'intégrité de fichiers aléatoires +md5sum "$TEST_DIR/opt/nextcloud/data/user1/files/photo.jpg" +``` + +#### 5. Documenter les résultats + +```bash +# Créer un rapport +cat > "$TEST_DIR/test-report.txt" < /tmp/disaster-recovery-report-$(date +%Y%m%d).txt < /tmp/archive-files.txt +grep "nextcloud" /tmp/archive-files.txt +``` + +### Permissions incorrectes + +```bash +# Restaurer les permissions originales +sudo chown -R www-data:www-data /opt/nextcloud/data/ +sudo chmod -R 755 /opt/nextcloud/ +``` + +--- + +## Bonnes pratiques + +### 1. Planification des tests + +Créez un calendrier de tests : + +``` +Janvier : Test rapide +Février : Test rapide +Mars : Test rapide + Test service (Nextcloud) +Avril : Test rapide +Mai : Test rapide +Juin : Test rapide + Test service (Mailcow) + DR complet +Juillet : Test rapide +... +``` + +### 2. Documentation continue + +Après CHAQUE test : + +- Mettre à jour ce document avec les leçons apprises +- Noter les durées réelles +- Documenter les problèmes et solutions +- Partager avec l'équipe + +### 3. Automatisation + +Créer des scripts pour les tests fréquents : + +```bash +# Script de test rapide automatisé +./scripts/test-restore-quick.sh + +# Script de rapport automatique +./scripts/generate-restore-report.sh +``` + +### 4. Formation de l'équipe + +- Faire tourner les personnes qui effectuent les tests +- Documenter la procédure comme si vous la lisiez pour la première fois +- Simuler des pannes sans prévenir (test surprise) + +### 5. Amélioration continue + +À chaque test, posez-vous : + +- Qu'est-ce qui pourrait être plus rapide ? +- Qu'est-ce qui manque dans la documentation ? +- Quels fichiers critiques ne sont pas backupés ? +- Comment réduire le RTO (temps de restauration) ? + +--- + +## Métriques importantes + +### RTO (Recovery Time Objective) + +**Temps maximum acceptable pour restaurer le service** + +Mesurez lors de vos tests : + +- Restauration fichiers uniquement : **\_** minutes +- Restauration + redémarrage services : **\_** minutes +- Disaster Recovery complet : **\_** heures + +### RPO (Recovery Point Objective) + +**Quantité de données qu'on peut accepter de perdre** + +Avec backup quotidien à 3h : + +- RPO : Maximum 24 heures de données perdues + +Si critique, envisager : + +- Backups plus fréquents (2x/jour) +- Réplication en temps réel +- Snapshots supplémentaires + +--- + +## Conclusion + +**Un test de restauration régulier est la SEULE façon de garantir que vos backups fonctionnent.** + +N'attendez pas la catastrophe pour découvrir que vos backups sont inutilisables. + +### Prochaines étapes + +1. [ ] Planifier votre premier test rapide (cette semaine) +2. [ ] Calendrier de tests pour l'année +3. [ ] Former au moins une autre personne à la procédure +4. [ ] Automatiser les tests simples +5. [ ] Documenter votre RTO/RPO réel + +--- + +**Date de dernière mise à jour :** 2025-12-18 +**Version :** 1.0 +**Mainteneur :** Agence66