4. Création de la sauvegarde de l'étape 1

Votre sauvegarde de production étant effectuée, il est indispensable de conserver les informations de partitions pour pouvoir les reconstruire.

Le script make.fdisk recherche les informations des partitions du disque dur et les enregistre dans trois fichiers. Le premier est un script exécutable, nommé make.dev.x (où « x » est le nom du fichier de périphérique, c'est-à-dire hda). Le second est mount.dev.x, qui crée les points de montage et qui y monte les partitions nouvellement créées. Le dernier, dev.x, est constitué des commandes nécessaires à fdisk pour construire les partitions. Vous précisez quel disque dur vous désirez, pour construire les scripts associés (et donc les noms de fichiers) en nommant le fichier de périphérique associé comme argument de make.fdisk. Par exemple, sur un système IDE classique,

bash# make.fdisk /dev/hda

produit les scripts make.dev.hda, mount.dev.hda ainsi que le fichier en entrée de fdisk, dev.hda.

De plus, si make.fdisk rencontre une partition FAT, il conserve le secteur d'amorçage de la partition dans un fichier nommé dev.xy, où x est le nom de périphérique du disque (c'est-à-dire sdc, hda) et y est le numéro de la partition. Le secteur d'amorçage est le premier secteur (512 octets) de la partition. Ce secteur est restauré en même temps que les partitions sont reconstruites, dans le script make.dev.hda.

Heureusement, le prix des disques durs s'effondre presque aussi vite que la confiance du public envers les politiciens après une élection. Donc, c'est une bonne chose que les fichiers produits soient au format texte et puissent être édités manuellement. C'est la façon la plus difficile mais la plus flexible pour effectuer une reconstruction sur un plus grand disque de remplacement. (Voir la liste du carnet de route.)

Les autres méta données sont conservées dans le script save.metadata. Le script enregistre les informations de partition dans le fichier fdisk.hda à la racine du disque ZIP. C'est une bonne idée d'imprimer ce fichier ainsi que votre /etc/fstab pour avoir une copie durable au cas où vous devriez restaurer manuellement les données de la partition. Vous pouvez enregistrer une arborescence en alternant l'utilisation de deux consoles virtuelles, par le lancement de fdisk dans l'une et en affichant par la commande cat /etc/fstab ou /fdisk.hda au besoin. Cependant, pratiquer ainsi peut mener à l'erreur.

Vous voudrez aussi conserver les fichiers se rapportant à votre méthode de restauration. Par exemple, si vous utilisez nfs pour sauvegarder vos données, vous devrez conserver hosts.allow, hosts.deny, exports, etc. De même, si vous utilisez un processus de restauration adossé au réseau comme Amanda ou Quick Restore, il vous faudra conserver les fichiers de configuration réseau tels que HOSTNAME, hosts, etc., ainsi que l'arborescence logicielle qui s'y rapporte.

La façon la plus simple de régler ces questions ainsi que d'autres similaires est de conserver l'intégralité du répertoire etc.

Il est impossible à un lecteur ZIP de 100 Mo de contenir à lui tout seul l'installation d'une distribution moderne d'un serveur Linux. Nous ne pouvons pas conserver l'ensemble du zinzin. Il nous faut être bien plus sélectifs. De quels fichiers avons-nous besoin ?

Pour déterminer les répertoires nécessaires au démarrage, il nous faut regarder dans le fichier d'initialisation du démarrage /etc/rc.sysinit. Il détermine son propre chemin ainsi :

PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

Les essais et les erreurs ont indiqué que nous avons besoin d'autres répertoires, tels que /dev. Sous Linux, vous ne pouvez pas faire grand-chose sans les fichiers de périphériques.

Lorsque vous lirez le script save.metadata, vous remarquerez que nous ne sauvegardons pas nécessairement les fichiers qui sont appelés par leur chemin absolu.

Il nous faudra peut-être procéder à plusieurs itérations de sauvegarde, tester la restauration intégrale du système, réinstaller d'un CDROM et essayer encore, avant d'obtenir un script de sauvegarde fonctionnel. Pour la préparation de ce guide pratique, j'ai fait cinq itérations avant de réussir une restauration. C'est la raison pour laquelle il est nécessaire d'utiliser des scripts dès que possible. Testez soigneusement !

L'une des choses à faire avec un système basé sur RPM est d'utiliser le programme rpm pour déterminer l'emplacement des fichiers. Par exemple, pour obtenir la liste complète des fichiers utilisés par le paquet openssh, saisissez :

bash# rpm -ql openssh

Certains éléments ne sont pas nécessaires, comme les pages man. Vous pouvez les inspecter un par un et décider de les sauvegarder ou non.

[Note]AVERTISSEMENT

La seconde étape de la restauration est menée sans que les fichiers précédemment restaurés soient écrasés. Cela signifie que les fichiers restaurés durant la première étape sont ceux qui seront utilisés après la fin de la restauration. Donc, mettez à jour vos sauvegardes intégrales de système à chaque fois que vous mettez à jour des fichiers de ces répertoires.

[Note]AVERTISSEMENT

La version de tar fournie avec tomsrtbt ne préserve pas le propriétaire lors de la restauration. Ceci peut poser problème à des applications comme Amanda. Amanda, outil de sauvegarde et de restauration, a plusieurs répertoires dont le propriétaire est son utilisateur éponyme. La solution est :

  • Notez quels sont les répertoires et les fichiers dont root n'est pas propriétaire.

  • Notez l'identifiant de leurs propriétaires.

  • Faites en sorte que le processus de restauration comprenne le rétablissement du propriétaire. Par exemple :

    bash# chown -R amanda:disk /var/lib/amanda
    

    vous pouvez aussi ajouter cette ligne à vos scripts de la deuxième étape de restauration, comme dans restore.tester.

4.1. Variations sur le thème

4.1.1. Pas de lecteur ZIP

Ce processus de sauvegarde vous oblige à disposer du lecteur de disque ZIP à chaque sauvegarde. Vous pouvez créer le contenu du disque ZIP dans un répertoire, puis le sauvegarder via le réseau. Ensuite, il vous faudra simplement construire un disque ZIP sur le serveur de sauvegarde (avec la commande cp -rp) lorsque vous aurez besoin de restaurer.

Le processus de sauvegarde sera plus rapide, mais vérifiez tout de même que le répertoire créé tiendra sur votre disque ZIP (avec la commande du -hs $cible.zip) ! Vous devrez éditer la définition de la variable zip dans le fichier save.metadata.

Mon portable ne supportant pas la présence simultanée d'une carte réseau et d'un lecteur ZIP, c'est le processus que j'utilise pour le sauvegarder. Je conserve une image de sauvegarde en même temps que la courante, ce qui fait que je dispose d'un système de secours au cas où l'ordinateur planterait pendant une sauvegarde.

Vous pouvez aussi sauvegarder sur plusieurs disques ZIP des données qui en valent la peine, et les transférer sur le système pendant la restauration.

4.1.2. Cédérom

Ceci est similaire à l'option « pas de lecteur ZIP » ci-dessus. Enregistrez vos sauvegardes dans un répertoire de votre disque dur, comme mentionné. Puis, utilisez la commande mkisofs pour créer une image ISO 9660 de ce répertoire et gravez-la.

De nos jours, beaucoup d'ordinateurs sont livrés avec un lecteur de CDROM mais pas de disquette. De plus, les lecteurs de disquette tombent en panne. C'est pourquoi, graver votre CDROM avec une image qui permette d'amorcer le système est une bonne idée. La mauvaise nouvelle, c'est que le format « El Torito » supporte les disquettes de 1,2 Mo, 1,44 Mo et 2,88 Mo, et que tomsrtbt utilise une disquette de 1,7 Mo. La bonne nouvelle, c'est que vous pouvez obtenir une version en 2,88 Mo, tomsrtbt-2.0.103.ElTorito.288.img , des mêmes miroirs que là où vous vous procurez l'image pour disquette. Placez une copie [1] dans le répertoire racine des fichiers de sauvegarde. Puis, utilisez l'option -b de la commande mkisofs pour spécifier que tomsrtbt-2.0.103.ElTorito.288.img est le fichier de l'image d'amorçage.

Le seul point noir de ce processus est que beaucoup de vieux BIOS ne supportent pas les images de disquette de 2,88 Mo sur CDROM. Beaucoup de ceux-ci s'amorceront avec une disquette tomsrtbt.

On peut aussi utiliser Syslinux. Il n'est pas dépendant de l'image d'une disquette et vous pouvez construire votre propre CD avec un certain nombre d'outils tels que tomsrtbt.

Il vous faudra peut-être ajuster les options du BIOS pour pouvoir amorcer sur le lecteur de CDROM.

Testez vos CDROM sur le lecteur que vous utiliserez pour la restauration. S'il se trouve que vous devez modifier les scripts, vous pouvez les copier dans /tmp, un disque en mémoire vive sous tomsrtbt, et les y éditer. Les scripts s'exécuteront à cet emplacement. Un disque en MEV étant volatil par nature, enregistrez vos changements avant de réamorcer !

4.1.3. Disques ZIP multiples

En séparant les deux premiers scripts de la première étape, restore.metadata et save.metadata, vous pouvez répartir les méta données de la première étape sur plusieurs disques ZIP.

4.1.4. Exclusions de l'enregistrement de la première étape

Lors de la première étape, il est parfois nécessaire de compresser quelques méga-octets de données, particulièrement lorsque vous atteignez les limites de votre disque ZIP. La fonction crunch du script save.metadata accepte de nombreux paramètres pour alimenter la commande tar. Elle accepte aussi le paramètre --exclude. Ainsi, par exemple, vous pouvez exclure les répertoires samba et X11 situés dans /etc de cette façon :

crunch etc etc --exclude etc/samba --exclude etc/X11

Pourquoi ces deux-là ? Parce qu'ils consomment beaucoup d'espace disque et que nous n'en avons pas besoin pour l'amorçage.

Si vous possédez un nombre important de noyaux, vous pouvez éliminer les modules de tous les noyaux sur lesquels vous n'amorcerez pas. vérifiez votre lilo.conf ou grub.conf pour connaître le noyau que vous utiliserez, puis vérifiez /lib/modules pour connaître les répertoires des modules que vous pouvez exclure.

Où trouver d'autres bons candidats à l'exclusion ? Listez les répertoires cible avec la commande ls -alSr pour les fichiers individuels, et avec la commande du | sort -n pour les répertoires.

Une autre façon (probablement plus nette), d'exclure les répertoires est d'écrire la liste complète des répertoires dans un fichier puis d'y faire référence via l'option tar --exclude-from=FILENAME.

4.1.5. Initrd

Si votre système utilise un disque MEV pour initialiser, ou initrd pour amorcer, assurez-vous que restore.metadata crée le répertoire /initrd. La façon la plus simple de le faire est de s'assurer qu'ils figurent dans la liste des répertoires utilisés dans la boucle de création des répertoires (vers la fin).

Votre système utilise probablement initrd s'il démarre sur un disque SCSI ou si sa racine est sur une partition ext3fs. Vérifiez dans /etc/lilo.conf s'il appelle un tel script.



[1] Je fais ressortir copie parce que mkisofs détruira le fichier dans le répertoire où il fabrique l'image ISO.