# 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