J'ai pu remarquer que beaucoup d'entre nous rencontraient des difficultés à manipuler les partitions de leur disque, entre autres lorsqu'il s'agissait de redimensionner ou déplacer, sans perdre pour autant les données / permissions. Les 3/4 du temps, cela se terminait par une ré-installation.
Il existe pourtant quelques outils permettant de remédier à ces soucis, mais comme souvent : ils ne sont pas d'une simplicité à toute épreuve. Je me propose donc de vous faire part de mes quelques expériences en la matière. Vous pouvez, pour expérimenter les opérations suivantes, télécharger SystemRescueCD, et l'utiliser ensuite, il contient à peu près tout ce dont vous pourriez rêver ^^.
1. Généralités.
Tout d'abord, il faut noter que si linux offre depuis quelques années le choix entre plusieurs systèmes de fichiers, ils n'offrent pas tous le même niveau de fiabilité / compatibilité / rapidité. Et bien souvent, le mieux est l'ennemi du bien.
Un exemple simple en est reiserfs. C'est un système rapide, performant, mais... peu souple. L'exemple le plus probant en est qu'il est encore aujourd'hui impossible de faire un dump de ce système de fichiers (il y eu une tentative de développement d'un reiserfsdump, qui semble aujourd'hui abandonnée, remplacée par un wrapper perl qui a recours aux services de tar). Et cette limitation risque de le cantonner à des usages non professionnels (on peut néanmoins utiliser des outils de sauvegardes tiers, qui travaillent à un niveau faisant abstraction de la structure du système de fichiers, mais cela implique un coût non négligeable, et une couche supplémentaire à configurer / maintenir).
NB : dump est un outil qui permet de créer une image parfaite de la structure d'un système de fichiers unix, en conservant toutes les informations nécessaires à sa restauration. L'outil qui sert à restaurer se nomme d'ailleurs... restore ^^.
Dans la suite de ce document, je m'attacherais donc à des systèmes de fichiers ext2 (ou ext3, qui n'est autre qu'ext2 avec un journal en plus : vous pouvez tout à fait lire un système ext3 en le "montant" comme un ext2).
2. "dumper" une partition ext.
Sur votre distrib favorite, assurez-vous d'avoir installé les outils dump et restore, sinon :
Code: Select all
emerge dumpLe niveau 0 correspond à une sauvegarde complète, le niveau 9 au dernier niveau incrémental disponible.
Au moment où vous lancez dump, il vérifie le contenu du fichier /etc/dumpdates. Dans celui-ci se trouve la date et le niveau du dernier dump. Selon ce dernier, il fera ou non une sauvegarde incrémentale. Mais prenons un exemple, souvent plus parlant...
exemple :
Faites le lundi un dump de niveau 0. Il correspond à une sauvegarde complète, et vous avez donc une image totale de votre système de fichiers.
Le mercredi, lancez une sauvegarde de niveau 2 (les chiffres peuvent ne pas se suivre). Dump constate que la dernière sauvegarde date du lundi, et qu'il s'agissait d'une sauvegarde complète (niveau 0). Il va donc contrôler chaque fichier, et vérifier sa date de modification afin de déterminer si il a été modifié depuis la dernière sauvegarde, celle du lundi.
Le vendredi, lancez une sauvegarde de niveau 5. Elle ne sauvegardera que les fichiers modifiés entre mercredi et vendredi.
Le samedi, lancez une sauvegarde de niveau 4. Dans ce cas, dump va examiner les fichiers modifiés depuis mercredi (et non pas vendredi ! car le backup de vendredi était d'un niveau supérieur : 5).
NB : En jouant sur les niveaux de sauvegarde, vous pouvez arriver à ne faire une sauvegarde complète que 3 ou 4 fois par an, sans pour autant risquer de perdre plus de quelques heures de travail, mais ceci dépasse le cadre de ce document.
Pour l'exemple, nous allons nous limiter à une image complète (niveau 0), que nous compresserons ensuite pour éviter de perdre de la place.
La syntaxe de la commande est la suivante :
Code: Select all
/sbin/dump -$LEVELua -f $FILE $DIRECTORY$FILE : le fichier dans lequel est écrit le dump.
$DIRECTORY : le point de montage à sauvegarder.
Si je souhaite sauvegarder complètement ma partition /var dans le fichier /tmp/backup.var.dump, je vais donc entrer :
Code: Select all
/sbin/dump -0ua -f /tmp/backup.var.dump /varCode: Select all
/sbin/dump -0ua -f - /var | gzip > /tmp/backup.var.dump.gz3. restaurer la partition à l'identique avec "restore".
Comme je le disais plus haut, restore fait l'opération inverse de dump : il lit le fichier archive et ré-installe les fichiers tels qu'ils étaient lors de la sauvegarde (même propriétaire, mêmes droits, etc...).
Il faut tout d'abord monter la partition à restaurer, puis se placer à la racine de celle-ci :
Code: Select all
mount -t ext3 /dev/sdaXXX /mnt/restauration
cd /mnt/restaurationCode: Select all
restore -rf /tmp/backup.var.dumpCode: Select all
gunzip -c /tmp/backup.var.dump.gz | restore -rf -4. extraction de fichiers, individuellement, avec "restore".
Il est également possible, plutôt que d'effectuer une restauration totale du système de fichiers, de n'en sélectionner que quelques fichiers. Pour cela, on va utiliser le mode interactif de restore. Pour cela, on remplace l'option 'r' par l'option 'i', ce qui nous donne, en suivant toujours notre exemple :
Code: Select all
gunzip -c /tmp/backup.var.dump.gz | restore -if -Code: Select all
gunzip -c /tmp/backup.var.dump.gz | restore -if -
restore > add /boot
restore > extract5. Déplacer directement le contenu d'une partition vers une autre.
La procédure décrite plus haut peut parfaitement servir à migrer un système d'un disque sur l'autre, auquel cas on peut directement emboîter dump dans restore pour éviter de passer par un fichier intermédiaire. Exemple pour une partition /home :
Code: Select all
cd /mnt/home_nouveau_disque
dump -0ua -f - /home | restore -rf -(à compléter... et comme d'habitude n'hésitez pas à PM pour toutes corrections / suggestions / améliorations)
Bon courage.
Ani







