R5B08 - Séance 9

Sauvegardes et Restauration

Introduction

L'objectif de ce TP est à la fois de manipuler les outils de sauvegarde et restauration de données standards sous Unix mais aussi de vous faire prendre conscience de l'importance de la documentation de ce que vous faites.

Vous allez pour cela faire des sauvegardes et des restaurations de vos machines vers une machine dédiée aux sauvegardes et comparer les méthodes.

Environnement de travail

Contexte et contraintes

Le TP devra être effectué sur une infrastructure neuve préparée en début de TP et qui reprend celle des TP précédent.

Vous devrez mettre dans un document texte au format Markdown ce qui vous a permis de répondre aux questions de l'énoncé et ce qui est nécessaire à faire pour atteindre les objectifs demandés.

Pour le TP courant ce fichier devra être nommé README.md. Il devra être déposé dans le dépôt git de référence pour le module sous le dossier tp-04/LOGIN/ (avec LOGIN remplacé par votre identifiant). Un accès web à ce dépôt est disponible à l'URL suivante : https://gitlab.univ-lille.fr/etu/2025-2026/r5b08.

Infrastructure du TP

Vous allez devoir préparer votre infrastructure avec la commande vmiut (notre wrapper autour de virtualbox).

Pour mémoire :

  • vmiut creer MACHINE permet de créer une machine virtuelle nommé MACHINE
  • vmiut run MACHINE permet de démarrer la machine virtuelle nommé MACHINE
  • vmiut executer MACHINE -s SCRIPT permet d'exécuter SCRIPT sur MACHINE en tant que root
  • les commandes suivantes permettent d'attacher un clone du disque DISQUE en second disque dur virtuel de MACHINE

    vboxmanage clonemedium --format VMDK disk DISQUE $VBOXES/MACHINE/disque2.vmdk
    vboxmanage storageattach MACHINE --storagectl controleur1 --port 1 --device 0 --type hdd --medium $VBOXES/MACHINE/disque2.vmdk
    
  • le dossier /home/public/vm contient des images de disque virtuel vierge de différentes tailles.

Cette infrastructure va devoir regrouper les 4 machines suivantes :

  • moniteur accessible via une adresse IP dont le dernier octet est 10
  • poste1 accessible via une adresse IP dont le dernier octet est 21
  • poste2 accessible via une adresse IP dont le dernier octet est 22
  • backup accessible via une adresse IP dont le dernier octet est 30 et qui doit avoir 2 disques
    • un pour le système
    • un autre accessible via le dossier /srv et qui doit avoir une taille au moins 2 fois plus grosse que la taille du disque principal des autres postes.

Vos 4 machines doivent :

  1. être accessibles via ssh en tant que root depuis votre machine physique avec un appel à ssh suivi uniquement de leur nom (par exemple ssh moniteur doit vous connecter directement sur le moniteur en tant que root) avec une authentification faite par clés
  2. être reconnues par leur nom depuis chacun des autres postes virtuels (par exemple depuis backup un appel à ping moniteur doit répondre correctement).

Par ailleurs :

  • les paquets suivants doivent être installé sur tous les postes :
    • file
    • less
    • netcat
    • netstat
    • nmap
    • screen
    • xauth
    • dump qui permet d'accéder aux commandes dump et restore
    • rsync
    • bzip2
  • depuis backup vous devez être capable de vous connecter en tant que root via ssh sur les 3 autres postes
  • un serveur apache2 doit être installé sur moniteur

Sauvegarde incrémentale avec dump et restore

Lisez les pages dump(8) et restore(8).

Sauvegarde complète

Depuis backup, à l'aide de ssh, dump et bzip2 faites une sauvegarde complète (niveau 0) de la racine du disque (/) de moniteur dans le fichier /srv/dump/moniteur.0.bz2

Remise en place de SNMP

Remettez en place Net-SNMP sur votre infrastructure dans l'état atteint en fin de TP 03. Pour mémoire :

  • sur moniteur les outils clients snmp et les MIBS doivent être installés et accessibles ;
  • sur poste1 et poste2 l'agent snmpd doit être installé et correctement configuré.

Pour vérifier que votre installation fonctionne correctement, depuis moniteur vérifiez que la commande suivante vous affiche bien le nom du poste1 : snmpget -v 2c -c lecture poste1 sysName.0

Première sauvegarde incrémentale

Depuis backup, à l'aide de ssh, dump et bzip2 faites une sauvegarde incrémentale de niveau 1 de la racine du disque de moniteur dans le fichier /srv/dump/moniteur.1.bz2.

Comparez la taille des fichiers que vous avez créé dans /srv/dump.

Simuler une perte de données

Pour simuler une perte de données sur moniteur supprimez y le contenu complet de /usr/share/snmp.

Vérifiez que la commande snmpget précédente ne fonctionne plus.

Restauration

Depuis backup, à l'aide de ssh, bzip2 et restore faites une restauration des fichiers perdus sur moniteur.

Vérifiez sur moniteur que tout est rentré dans l'ordre et que la commande snmpget refonctionne correctement.

Restauration complète avec dump et restore

Installation d'un service

En suivant la procédure de votre binôme du TP précédent installez le service dont l'installation y est décrite.

Seconde sauvegarde incrémentale

Depuis backup, à l'aide de ssh, dump et bzip2 faites une sauvegarde incrémentale de niveau 2 de la racine du disque de moniteur dans le fichier /srv/dump/moniteur.1.bz2.

Comparez la taille des fichiers que vous avez crée dans /srv/dump.

Restauration complète

Ajoutez temporairement un second disque sur moniteur de la même taille que le disque principal et rendez son contenu accessible via le dossier /mnt.

Depuis backup, à l'aide de ssh, bzip2 et restore faites une restauration totale sur moniteur dans /mnt. Cette restauration doit inclure le système, votre configuration de snmp et du service que vous avez installé (Cacti ou Icinga).

Comment avez-vous fait ?

Vérifiez que la restauration est bien complète en utilisant chroot pour utiliser le contenu de /mnt comme racine pour vos commandes et en testant la commande snmpget.

Restauration sur une machine neuve

Vous avez réussi à restaurer intégralement l'état de votre moniteur sur un disque. Vous devriez donc être capable de reconstruire complètement une nouvelle machine en cas de perte complète de la machine. Nous allons simuler cette perte.

Après avoir détruit votre machine moniteur reconstruisez en une nouvelle vierge.

Depuis backup, à l'aide de ssh, bzip2 et restore faites une restauration des fichiers des sauvegardes de niveau 1 puis 2 sur moniteur.

Est-ce que la machine moniteur est dans le même état qu'avant sa destruction ?

Sauvegarde/Restauration de fichiers avec rsync

Lisez la page rsync(1).

Sauvegarde de configuration

Assurez-vous que vous avez bien un serveur apache2 et un agent snmpd fonctionnels sur poste1.

Depuis poste1, à l'aide de rsync faites une copie de l'intégralité des fichiers de /etc/ sur backup dans le dossier /srv/rsync/poste1.1/

Notez l'espace disque utilisé par /srv/rsync sur backup.

Modification de configuration

Sur poste1 modifiez la configuration de l'agent snmp de façon à ce qu'il utilise le mot modifié pour une communauté autorisée à utiliser les requêtes GET et GETNEXT.

Normalement vous n'avez modifié que le fichier /etc/snmp/snmpd.conf.

Vérifiez sur moniteur que la commande snmpget fonctionne bien avec la nouvelle communauté.

Restauration de la configuration initiale

De façon à annuler votre dernière modification et en utilisant la copie des fichiers que vous avez placé sur backup dans /srv/rsync/poste1.1 récupérez le fichier de configuration de l'agent snmp de poste1 pour retrouver sa configuration avant votre dernière modification.

Comment avez-vous fait ?

Suppression d'un service sur poste1

Supprimez complètement le service apache2 et sa configuration de poste1.

Sauvegarde du nouvel état

Après avoir bien étudié les options --delete et --link-dest de rsync, refaites une copie de l'intégralité des fichiers de /etc/ sur backup dans le dossier /srv/rsync/poste1.2/ en vous assurant que :

  1. les fichiers supprimés (la configuration d'apache2) ne soient pas copiés ;
  2. que les autres fichiers ne soient copiés que s'ils ne sont pas déjà présents dans /srv/rsync/poste1.1 ;
  3. que les fichiers déjà présents dans /srv/rsync/poste1.1 soient placés dans /src/rsync/poste1.2 comme liens physiques.

Comparez l'espace disque utilisé par /srv/rsync sur backup et celui que vous aviez noté précédemment.