Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Trucs:Cloner son système
Jonesy<jonesy_at_wanadoo_dot_fr>
Attention : Il semblerait que cette méthode puisse poser problème avec certain logiciels liés au répertoire /dev, en particulier les logiciels utilisant le son comme xine. En conséquence, utilisez ce tips avec précaution.

Cloner votre système consiste à faire une copie de votre système, comme le fait par exemple ce Trucs & Astuces : [?aff_item=147 Copier (déplacer) son Linux sur DD]. A la différence, que cette copie vous pourrez la mettre à jour très rapidement et très facilement.
C'est ce que l'on appelle une Sauvegarde différentielle en informatique.

Quel est l'intérêt d'une telle copie ?
Etre sûr de conserver un système qui marche impéccablement bien et en même temps pouvoir faire des tests d'installations de logiciels, d'optimisation, de création de packages et tout ce qui peut vous passer par la tête sur votre système.
La création de packages pour sa distribution est un bon exemple, car c'est typiquement le genre d'activité où vous pouvez casser votre système, surtout lorsque vous packagez une librairie centrale.
Et donc ainsi, vous pouvez tester ce que vous voulez en toute sécurité, une fois que vous savez que cela marche sur la copie, vous l'appliquez sur votre système original (stable) et vous n'avez plus qu'à remettre le système copié à jour.
Enfin, si un jour pour une raison ou une autre le système original ne fonctionne plus, vous aurez votre copie.

Bien entendu, cela peut vous servir pour faire simplement une sauvegarde régulière rapidement.

Pré-requis

Vous devez de préférence avoir une partition libre d'une taille adéquate. La taille doit être égale à la somme des tailles des partitions de votre système original (/ + /home + /usr + /boot +...). Si ce n'est pas le cas, il faut qu'une partition de votre système soit capable d'accueillir tout le système.
De plus, il est souhaitable, que vous maitrisiez la configuration de votre loader ([../admin/LILO.php3 lilo], [../admin/grub.php3 grub]) et le fichier [../admin/fstab.php3 /etc/fstab].
Enfin, pour que la copie soit efficace et significative, il est conseillé d'être root. Alors méfiance à ce que vous faites !

Par la suite, je considère que le système copié est sur une partition indépendante (libre). Donc je vais supposer que la partition est montée sous /mnt/copie.

La première copie

Nous allons créer un fichier d'exclusion, qui comme son nom l'indique, contiendra la liste des fichiers ou répertoires à ne pas sauvegarder. Car certains répertoires et fichiers sont inutiles sur le système copié.

Le fichier exclud.lst :

--------------------
/proc
/tmp
/mnt
/etc/fstab
--------------------

Ce fichier doit aussi contenir le répertoire où vous faites la copie si vous décidez de mettre la copie ou de monter la partition ailleurs que sous /mnt.
Une fois ce fichier créé, gardez-le bien au chaud dans un coin, vous en aurez besoin à chaque mise jour. Maintenant, copions le système :

rsync -ravH --exclude-from=exclud.lst / /mnt/copie

La copie faite, si vous le désirez, vous pouvez rendre ce nouveau système bootable :

cd /mnt/copie
mkdir proc tmp mnt
chmod -R 755 proc mnt
chmod -R 777 tmp

De plus, créez les répertoires utiles dans /mnt/copie/mnt, comme cdrom, win_c ou floppy.
Créez le fichier /mnt/copie/etc/fstab correspondant à ce nouveau système. C'est à dire qu'il doit ressembler à celui d'origine mais en y enlevant les lignes des autres points de montages (/home, /usr, /boot,...) et en remplacant le /dev/... du root (/) par celui de la partition de copie.
Et enfin sur le système orignal, modifiez la configuration de votre loader afin de pouvoir booter sur le système copié.

Mise à jour de la copie par rapport à l'original

Ressortez le fichier exclud.lst, montez la partition contenant la copie, nous allons la mettre à jour. C'est à dire que seulement ce qui a été modifié, créé ou détruit sur le système original depuis la dernière mise à jour sera reproduit sur le système copié (sauvegarde différentielle).

rsync -uravH --delete --exclude-from=exclud.lst / /mnt/copie

Si vous souhaitez simplement simuler ce qui va se passer afin de vérifier avant :

rsync -uravHn --delete --exclude-from=exclud.lst / /mnt/copie

Et, important, si vous ne voulez pas effacer les fichiers de la copie qui n'existent plus sur l'original, faites :

rsync -uravH --exclude-from=exclud.lst / /mnt/copie

Dans ce dernier cas, votre copie ne sera plus exactement la copie de l'original.

Un tips apportés par Maxx Twayne consiste à surcharger les options de rsync par celle-ci :

rsync -ravlpogtDH [...]

Ces options permettent un mode archivage (a) en récursif (r) en préservant les liens symboliques (l), en préservant les hards-links (H), préservant les permissions (p), le propriétaire (o) et le groupe (g), en préservant les devices (D) et en respectant les champs "times" des fichiers (t). Elles sont redondantes avec l'option -a (equivalent de -rlptgoD).

Voilà, vous savez tout ! Je vous invite à faire un petit man rsync pour en savoir plus.

PS : La commande rsync est applicable sur n'importe quel répertoire. Je pense particulièrement aux répertoires sensibles, tel que /etc, si vous n'avez pas la possibilité de sauvegarder tout votre système.

Affichages

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA