Sauvegarde (1/x)


Voici donc la suite des articles sur la sauvegarde d’un système. Nous allons réaliser une image asr du système courant.
ASR, pour Apple Software Restore est utilisé par Apple pour l’installation automatique des machines neuves. Il est également possible de se servir de ASR pour les sauvegardes et les restaurations.

Prérequis

<td valign="top">
  Il est nécessaire d&#8217;avoir de la place disque. Si possible sur un disque externe ou une partition autre que celle du système. La place disque nécessaire est égale à au moins une fois celle occupée par votre système. Soit environ 30 Go dans mon cas.
</td>

Principe

Pour faire cette sauvegarde, nous allons créer une image sur laquelle nous allons copier, avec asr les éléments qui sont sur le disque démarrage. Cette image pourra ensuite être restaurée sur un disque externe, ou sur le disque principal de la machine à condition de démarrer sur un autre disque ou sur CD-ROM.

Définition de quelques variables

Pour éviter de retaper plusieurs fois les mêmes choses, on utilise des variables. Celles-ci sont conservées en mémoire tant que le script Shell est en cours d’exécution.
Il nous faut une variable pour le nom du volume, nous prendrons le nom de la machine, une variable pour le nom de l’image, le fichier sur le disque, une variable pour le nom de la destination (le disque sur lequel l’image sera stockée) et une variable pour le chemin de la source des fichiers à sauvegarder, ici la racine du disque représentée par /. Pour définir une variable, on donne son nom, suivi (sans espace) par le signe égal puis, toujours sans espace, la valeur que l’on veut lui affecter :

1
2
3
SOURCE='/'
FILEDEST='/Volumes/Divers'
IMAGENAME=`hostname`_`/bin/date +%Y-%m-%d`.dmg

Le nom de l’image comporte le nom de la machine (le résultat de la commande hostname plus la date de création de celle-ci. On appelle l’utilitaire date avec un formatage particulier.

Création de l’image

Pour créer l’image, nous devons d’abord déterminer la taille que celle-ci devra avoir. Pour cela nous allons utiliser la commande df.
Cette commande permet de connaître l’espace utilisé et l’espace libre sur une ou plusieurs partitions. Grâce au paramètre -m nous aurons cette taille en mégaoctets. L’information qui nous intéresse est la taille utilisée, c’est-à-dire celle de la troisième colonne. C’est l’utilitaire (plutôt le langage) awk qui va nous permettre d’obtenir ce chiffre. Enfin, et par mesure de sécurité, nous allons augmenter cette taille de 5 %. Voici le code qui réalise cette opération :

1
2
3
SIZE=`df -m $SOURCE | grep '^/'`
SIZE=`echo $SIZE | awk '{print $3}'`
SIZE=`dc -e "$SIZE $SIZE 5 / + n"`

Une fois la taille de l’image obtenue, il est temps de créer cette image, sur le disque qui dispose de suffisamment de place pour cela.
C’est l’utilitaire hdiutil que nous allons utiliser.
Remarquez que pour utiliser une variable et donc la valeur quelle contient, on ajoute $ devant son nom.
hdiutil create -quiet -megabytes $SIZE -fs HFS+ -volname $VOLUMENAME $IMAGENAME

Montage de l’image

Il faut maintenant rendre disponible l’image pour la sauvegarde en la « montant ». C’est à nouveau hdiutil qui fait le travail :

1
2
 
DEVICE=`hdiutil attach $IMAGENAME | grep $VOLUMENAME | cut -d" " -f1` 

Le résultat de la commande complète est stocké dans la variable DEVICE dont nous nous servirons plus tard.

Réalisation de la sauvegarde

Enfin il est possible de réaliser la sauvegarde avec asr qui copie de puis la source vers la cible (target en anglais). Au passage nous demandons a ce qu’il n’y ait pas de question posée, asr prenant alors ses valeurs par défaut.

1
/usr/sbin/asr --source $SOURCE --target /Volumes/$VOLUMENAME -noprompt

Démonter l’image

Une fois la sauvegarde terminée, il est temps de « démonter » l’image, toujours avec hdiutil :

1
hdiutil detach -quiet $DEVICE

Restaurer avec notre image

Voici maintenant comment utiliser notre image en cas de problème sur le disque démarrage. Il faut bien sûr que le disque sur lequel est stockée l’image soit accessible.
Vous devez démarrer sur un disque externe comportant un système, par exemple en mettant votre Mac malade en mode Target. Cela se fait en reliant votre Mac à un autre par un câble FireWire et de démarrer votre Mac en maintenant enfoncé la touche T. Votre Mac est alors vu comme un disque dur sur l’autre machine. Vous pouvez aussi démarrer sur le CD-ROM d’installation du système fourni avec votre machine.
Vous devez ensuite lancer le Terminal, et repérer l’emplacement de votre image (par exemple /Volumes/Sauvegarde/backup_2007-06-01.dmg.
C’est avec asr que la restauration sera faite, exactement que fut fait la sauvegarde :

1
asr --source /Volumes/Save/backup_2007-06-01.dmg --target /Volumes/Disque_endomagé --erase

Billet Précédent | Billet Suivant

powered by FreeBSD