<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <META NAME="GENERATOR" CONTENT="lfparser_2.52"> <META NAME="LFCATEGORY" CONTENT="UNIXBasics"> <link rel="icon" href="../../common/images/lf-16.png" type="image/png"> <TITLE>lf370, UNIXBasics: LF Tip : Cloner complètement des PC par le réseau</TITLE> <style type="text/css"> <!-- td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 } pre { font-family:monospace,Courier } pre.code { font-family:monospace,Courier;background-color:#aedbe8; } p.cl { color:#EE9500 } table.left { margin-right:0.3cm } a.nodec { text-decoration:none } p.trans { font-size:8pt; text-align:right } p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm; text-align:center } p.code { width:80%; alignment:center; background-color:#aedbe8; border-style:none; border-width:medium; border-color:#aedbe8; padding:0.1cm; text-align:left } p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center } div.tbbutton { background: #ddd; border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; margin: 2px 5px 2px 5px; text-align: center; width: 20em; line-height: 1.2em; padding: 2px; font-size: 12px; white-space: nowrap; color: #555; } div.bbutton { background: #ddd; border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; float: left; margin: 2px 5px 2px 5px; text-align: center; line-height: 1.2em; padding: 2px; font-size: 12px; white-space: nowrap; color: #555; } --> </style> </HEAD> <BODY bgcolor="#ffffff" text="#000000"> <!-- this is generated html code. NEVER use this file for your translation work. Instead get the file with the same article number and .meta.shtml in its name. Translate this meta file and then use lfparser program to generate the final article --> <!-- lfparser can be obtained from http://main.linuxfocus.org/~guido/dev/lfparser.html --> <!-- this is used by a number of tools: =LF=AUTHOR: Gerrit Renker =LF=CAT___: UNIXBasics =LF=TITLE_: LF Tip : Cloner complètement des PC par le réseau =LF=NUMBER: 370 =LF=ANAME_: article370.shtml =LF=PARSER: 2.52 --> <!-- 2pdaIgnoreStart --> <!-- start navegation bar, current, style=2 --> <!-- top navegation bar --> <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#2e2292"> <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width= "100%"> <TR><TD width="319"><a href="../../index.shtml"><IMG src="../../common/images/logolftop_319x45.gif" alt="[LinuxFocus-icon]" width="319" height="45" align="left" border="0"></a></TD> <TD class="top"> <TABLE summary="topbar_1_links" width="100%"> <TR align="right"> <TD class="top"> <A class="nodec" href="../../index.shtml"><FONT color= "#DDDDDD" size="2"><--</FONT></A> | <A class="nodec" href="../map.html"><FONT color= "#DDDDDD" size="2">Carte</FONT></A> | <A class="nodec" href="../indice.html"><FONT color= "#DDDDDD" size="2">Index</FONT></A> | <A class="nodec" href="../Search/index.html"><FONT color= "#DDDDDD" size="2">Recherche</FONT></A> </TD> </TR> <TR align="right"> <TD class="top"> <HR width="100%" noshade size="1"> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end top navegation bar --> <!-- blue bar --> <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#00ffff"> <TD><IMG src="../../common/images/transpix.gif" width="1" height= "2" alt=""></TD> </TR> </TABLE> <!-- end blue bar --> <!-- bottom navegation bar --> <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center" width="94%"> <TR bgcolor="#000000"> <TD> <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width= "100%"> <TR align="center"> <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color= "#FFFFFF">Nouvelles</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color= "#FFFFFF">Archives</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Links/index.html"><FONT color= "#FFFFFF">Liens</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color= "#FFFFFF">A propos</FONT></A> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end bottom navegation bar --> <!-- stop navegation bar --> <!-- SSI_INFO --> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfdynahead ver 1.5 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Ce document est disponible en: <A href="../../English/March2005/article370.shtml">English</a> <A href="../../Castellano/March2005/article370.shtml">Castellano</a> <A href="../../ChineseGB/March2005/article370.shtml">ChineseGB</a> <A href="../../Francais/March2005/article370.shtml">Francais</a> <A href="../../Indonesian/March2005/article370.shtml">Indonesian</a> <A href="../../Turkce/March2005/article370.shtml">Turkce</a> </FONT></TD></TR></TABLE><br> <!-- SSI_INFO STOP --> <!-- 2pdaIgnoreStop --> <!-- SHORT_BIO_ABOUT_THE_AUTHOR_AND_INDEX_START --> <TABLE ALIGN="LEFT" BORDER="0" WIDTH="195" summary="about the author" class="left"> <TR> <TD> <img alt="this is me" src="../../common/images2/GerritRenker.jpg" width="175" height="213"> <BR>par Gerrit Renker <br> <small><gerrit.renker(at)gmx.de></small> <BR><BR> <I>L´auteur:</I><BR> <!-- aboutauthor_start --> L'auteur a obtenu un diplôme en Informatique en 2001. <!-- aboutauthor_stop --> <!-- TRANSLATED_TO fr --> <BR><BR><I>Traduit en Français par:</I><BR> Florent Morel <small><fleuh-(at)-free.fr></small> <br> <!-- =LF=TRANSTO=fr: Florent Morel --> <!-- TRANSLATED_TO_STOP --> <!-- INDEX_START --> <BR><i>Sommaire</i>: <UL> <LI><A HREF="#370lfindex0">Scénario</A></LI> <LI><A HREF="#370lfindex1">Méthodes possibles</A></LI> <LI><A HREF="#370lfindex2">Configurer ssh</A></LI> <LI><A HREF="#370lfindex3"> Créer un système de fichiers sur le PC cible</A></LI> <LI><A HREF="#370lfindex4">Autres systèmes</A></LI> <LI><A HREF="#370lfindex5">Références </A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=370">Talkback form for this article</A></LI> </UL> </TD></TR></TABLE> <!-- INDEX_STOP --> <!-- SHORT_BIO_ABOUT_THE_AUTHOR_AND_INDEX_STOP --> <!-- HEAD_OF_THE_ARTICLE_START --> <br> <table border="0"><tr><td> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfPdf ver 0.1 --> <TABLE style="border-style:outset; border-width:1px" align="right" bgcolor="#ff9616" cellspacing="1"><TR><TD bgcolor="#ff9616"> <a href="../Archives/lf-2005_03-0370.pdf"><small>PDF</small></a> </TD></TR></TABLE> <H2>LF Tip : Cloner complètement des PC par le réseau</H2> <img src="../../common/images2/article370.png" alt="[Illustration]" hspace="10" width="136" height="150"> <!-- ABSTRACT OF THE ARTICLE --> <P><i>Résumé</i>: <P> <!-- articleabstract_start --> Il arrive souvent que vous ayiez à dupliquer les données d'un ordinateur sur un autre. Une méthode sûre, facile à mettre en oeuvre et efficace est d'utiliser le clonage à travers un réseau tel que décrit dans ce tutoriel. <!-- articleabstract_stop --> <br><!-- HR divider --><center><font color="#8282e0"><b>_________________ _________________ _________________</b></font></center><br> </td></tr></table> <!-- HEAD_OF_THE_ARTICLE_STOP --> <!-- BODY_OF_THE_ARTICLE_START --> <A NAME="370lfindex0"> </A> <H2>Scénario</H2> Cloner des animaux ("Dolly la brebis") ou même des embryons humains est âprement discuté et d'un avenir incertain. Cependant, il ne fait aucun doute que cloner des machines est non seulement moins dangereux (à condition de le faire correctement) mais aussi utile pour l'évolution de scripts de configuration et de réglages écrits avec soin. Du fait de la loi de Moore et des rapides progrès de l'industrie des composants informatiques, l'utilisateur d'une distribution est quasiment certain d'avoir à réaliser un scénario de clonage au moins une fois. Par exemple lorsque le PC de la maison est remplacé par un ordinateur portable, ou simplement qu'un processeur plus rapide est disponible et que l'achat d'un nouvel ordinateur complet est trop onéreux. La tâche à réaliser est de <i>récupérer le système de fichiers en entier</i> depuis une machine A et de le rendre opérationnel sur une machine B. <br><br> Il y a deux manières de le faire ; celle qui n'est pas décrite dans ce tutoriel est d'ouvrir l'ordinateur, transférer physiquement le disque dur vers la machine cible pour effectuer la copie localement. Cela n'est pas souvent possible - ouvrir le boîtier entraîne souvent l'annulation de la garantie - et présente des risques, car une personne inexpérimentée peut endommager le matériel, physiquement ou électriquement. Il m'est même arrivé de perdre le contenu d'un disque à cause d'un logiciel de bas niveau bogué. L'autre approche, qui nécessite que les deux PC aient des cartes réseaux (ce qui est le cas très fréquemment), est bien plus sûre et décrite ici. <p> L'idée directrice de toutes les méthodes décrites ci-dessous est d'établir une connexion réseau entre la machine ''<i>source</i>'' (celle qui doit être clonée) et la ''<i>cible</i>'' (le clone). Cette étape est des plus simples si les deux machines sont branchées sur un hub, sinon vous pouvez connecter les cartes réseaux via un <i>câble croisé</i> (dans ce cas, les câbles normaux - droits - ne peuvent être utilisés). Pour le PC cible, un Live-CD (tel que Knoppix ou LNX-BBC) ou une installation minimale est requise afin que la carte réseau soit opérationnelle et que <tt>ssh</tt> et/ou <tt>netcat</tt> puisse être lancé. Il y a même des disquettes qui permettent cela (bien que dans mon cas <tt>tomsrtb</tt> plantait lors de l'initialisation de la carte réseau). Si vous voulez installer une autre (nouvelle) distribution quoi qu'il arrive, c'est une alternative simple. Les deux machines doivent être configurées avec des adresses IP sur le même réseau pour qu'elles puissent communiquer entre elles, tel que décrit sur l'image ci-dessus. </p> <A NAME="370lfindex1"> </A> <H2>Méthodes possibles</H2> <p> Considérant une configuration de base, il existe plusieurs façons de réaliser un clonage : </p> <ul> <li>copie binaire via <tt>dd</tt></li> <li>pipes <tt>tar / cpio</tt></li> <li><tt>rsync </tt> </li> <li><tt>dump</tt> et <tt>restore</tt></li> </ul> La première est compliquée sinon impossible si vos disques durs n'ont pas exactement les mêmes types et géométries. C'est une façon excellente pour copier des images iso (<tt>dd if=/dev/cdrom of=image.iso</tt>) ou des disquettes - <a href="../../common/src2/article370/diskcopy.txt">ici (shell script de copie de disque - diskcopy)</a> est un exemple de script <tt>diskcopy</tt> utilisant <tt>dd</tt>. L'autre inconvénient de l'approche basée sur <tt>dd</tt> est que l'espace inoccupé est aussi copié, prenant donc du temps inutilement. Les pipes <tt>tar</tt> et <tt>cpio</tt> prennent beaucoup de temps (jusqu'à plusieurs heures) et présentent quelques problèmes. Par exemple, il existe des restrictions sur les noms de fichiers et l'utilisation de liens symboliques, les fichiers dans <tt>/dev</tt>, etc. Je ne recommenderais généralement pas cette approche pour le clonage. <br><br> Si vous avez des systèmes de fichiers différents sur la machine source et cible, <b><tt>rsync(1)</tt></b> est probablement le meilleur choix. Il nécessite seulement <tt>ssh</tt> et transmet efficacement les fichiers grâce à un protocole des plus performants. Il a même une option <tt>-D</tt> pour les fichiers device, ainsi que plusieurs options pour répondre à la plupart des scénarii pratiques. C'est un outil très utile pour les backups quotidiens, le mirroring et autres. La page de manuel contient de nombreux exemples et est une très bonne source d'informations. Un exemple de clonage via <tt>rsync</tt> est présenté dans [<a href="#key-2">1</a>].<br><br> Ici nous utilisons la méthode via <tt>dump</tt> et <tt>restore</tt> dans le but de re-créer le système de fichiers entier. C'est rapide, efficace et délivre le résultat attendu avec un minimum d'efforts, donc idéal pour le clonage. <br><br> J'ai dû réaliser la procédure entière de clonage deux fois, car le PC cible a été rappelé et remplacé. Dans les deux cas, aucun problème n'apparut et le clonage mena à un clone fonctionnel, bootable en à peine une heure de copie des gigaoctets. Cette approche requiert que la machine source et la machine cible possèdent le même système de fichiers. Nous supposons que ce soit <tt>ext2</tt> ou <tt>ext3</tt>, puisque c'est actuellement le plus fréquemment utilisé (voir notes <a href="#sec:Other-systems">ci-dessous</a>). <A NAME="370lfindex2"> </A> <H2>Configurer ssh</H2> Une fois que vous avez un système minimal ou un Live-CD tournant sur la machine cible, la prochaine étape est de configurer <tt>ssh</tt> (si vous n'utilisez pas <tt>netcat</tt> pour le transfert comme détaillé plus loin). Ceci requiert que le PC source ait <tt>sshd</tt> (secure shell daemon) configuré et lancé. Vérifiez <tt>/etc/init.d/</tt> si vous avez un doute. Sur le PC cible entrez (en tant que root) : <pre class="code">ssh-keygen -t rsa</pre> Pour faire simple, n'entrez pas de passphrase. La clé publique est maintenant dans le fichier <tt>/root/.ssh/id_rsa.pub</tt>. Copiez ce fichier sur votre machine source via <pre class="code">scp /root/.ssh/id_rsa SourcePC:/tmp</pre> où <tt>SourcePC</tt> est l'adresse IP de votre PC source. Lorsqu'on vous demande si vous êtes sûr, entrez « <tt>yes</tt> » (« <tt>y</tt> » tout seul ne fonctionne que rarement). On vous demande alors le mot de passe root du PC source. Ajoutez à présent le PC cible en tant qu'hôte de confiance sur le réseau en entrant <pre class="code">cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys</pre> sur le PC source. Pour vérifier si tout va bien, répétez la commande de copie sur le PC cible. On ne devrait plus vous demander le mot de passe. <A NAME="370lfindex3"> </A> <H2> Créer un système de fichiers sur le PC cible</H2> <p> La première étape est toujours de partitionner le disque dur sur le système cible et de créer le système de fichiers <tt>ext2/ext3</tt>. Le second est une variante journalisée du premier et est disponible simplement en ajoutant l'option <tt>-j</tt> (journalisation) dans <tt>mke2fs</tt> (nécessite un noyau supportant <tt>ext3</tt>). Vous pouvez même convertir un système <tt>ext2</tt> en <tt>ext3</tt>, voir <b><tt>tune2fs(8)</tt></b>. Supposons que sur le PC source nous ayons la configuration suivante : </p> <table align="center" bgcolor="#000000" border="0" cellpadding="2" cellspacing="2" width="56%"> <tbody> <tr> <th bgcolor="#ffffff" valign="top">Filesystem</th> <th bgcolor="#ffffff" valign="top">Size</th> <th bgcolor="#ffffff" valign="top">Used</th> <th bgcolor="#ffffff" valign="top">Use%</th> <th bgcolor="#ffffff" valign="top">Mounted on</th> </tr> <tr> <td bgcolor="#ffffff" valign="top">/dev/hda3 </td> <td bgcolor="#ffffff" valign="top">2.7G</td> <td bgcolor="#ffffff" valign="top">552M</td> <td bgcolor="#ffffff" valign="top">22%</td> <td bgcolor="#ffffff" valign="top">/</td> </tr> <tr> <td bgcolor="#ffffff" valign="top">/dev/hda5 </td> <td bgcolor="#ffffff" valign="top">7.8G <br> </td> <td bgcolor="#ffffff" valign="top">1.6G</td> <td bgcolor="#ffffff" valign="top">22%</td> <td bgcolor="#ffffff" valign="top">/usr</td> </tr> <tr> <td bgcolor="#ffffff" valign="top">/dev/hda7 </td> <td bgcolor="#ffffff" valign="top">6.3G</td> <td bgcolor="#ffffff" valign="top">1.7G</td> <td bgcolor="#ffffff" valign="top">28%</td> <td bgcolor="#ffffff" valign="top">/usr/share</td> </tr> <tr> <td bgcolor="#ffffff" valign="top">/dev/hda8 </td> <td bgcolor="#ffffff" valign="top">3.4G</td> <td bgcolor="#ffffff" valign="top">601M</td> <td bgcolor="#ffffff" valign="top">19%</td> <td bgcolor="#ffffff" valign="top">/home</td> </tr> <tr> <td bgcolor="#ffffff" valign="top">/dev/hda12 </td> <td bgcolor="#ffffff" valign="top">5.3G</td> <td bgcolor="#ffffff" valign="top">1.9G</td> <td bgcolor="#ffffff" valign="top">37%</td> <td bgcolor="#ffffff" valign="top"> /opt</td> </tr> <tr> <td bgcolor="#ffffff" valign="top">/dev/hda1 </td> <td bgcolor="#ffffff" valign="top">587M</td> <td bgcolor="#ffffff" valign="top">70M</td> <td bgcolor="#ffffff" valign="top">13% <br> </td> <td bgcolor="#ffffff" valign="top">/var/backup</td> </tr> </tbody> </table> <p> Je recommande de toujours effectuer un partitionnement. Sinon, un simple problème dans l'utilisation du système ou un problème de disque dur concernant un nombre même limité de secteurs vous fera perdre <em>l'ensemble</em> de vos données. Si on se reporte à la loi de Murphy, soyez certains que cela arrivera si vous ne prenez pas la précaution d'utiliser plusieurs partitions au lieu d'une seule monolithique. J'ai rencontré cela avec un noyau étrange et si je n'avais pas partitionné le disque, j'aurais perdu toutes mes données en même temps que le système racine. Le tableau ci-dessus montre que <tt>/usr</tt> devenait trop volumineux, <tt>/usr/share</tt> a donc été ajouté. Il est temps d'acquérir un disque plus grand. </p> Sur le PC cible, lancez <tt>parted</tt> (recommandé) ou votre outil de partitionnement préféré (Qtparted est une variante graphique bien réalisée, dite clone de Partition Magic). Créez les partitions au moins aussi grandes que celles du PC source. N'oubliez pas le swap. Après avoir sauvé la table de partition, désignez le système de fichiers sur toutes les partitions nouvellement créées en utilisant <pre class="code">mke2fs -j -L <label> /dev/xxx</pre> où <tt>xxx</tt> est le nom de la partition et <tt><label></tt> la chaîne de label. J'utilise généralement des labels tels que « <tt>/usr</tt> » (vous verrez cela au moment du boot). Vous pouvez définir plusieurs points via <tt><b>tune2fs(8)</b></tt>, comme l'intervalle de vérification du système de fichiers. <h1>Transfert du système</h1> Premièrement vous devez monter toutes les partitions nouvellement créées. Commençons par la racine (« / ») et montons les répertoires restants au cours de la procédure. Il est parfaitement possible de condenser deux partitions du PC source en une seule sur le PC cible, en fait c'est ce que nous allons faire avec <tt>/usr</tt> et <tt>/usr/share</tt> dans l'exemple ci-dessus. Montez donc votre futur système en entrant <pre class="code">mount /dev/xxx /mnt</pre> Lors du clonage, il est nécessaire de faire un chdir dans le répertoire cible <pre class="code">cd /mnt</pre> Maintenant la partie réseau, sur le PC cible entrez <pre class="code">ssh sourcePC 'dump -0 -f - /' | restore -r -f -</pre> où <tt>sourcePC</tt> est l'adresse IP du PC source. L'option « <tt>-0</tt> » désigne backup complet, « <tt>-f -</tt> » indique d'utiliser <tt>stdin</tt>/<tt>stdout</tt> comme descripteurs de fichier et « <tt>-r</tt> » indique à restore de re-créer le système copié à travers le réseau sur le PC cible. Pour plus d'options voir <b><tt>dump(8)</tt></b> et <b><tt>restore(8)</tt></b>. Ci-dessous est présentée la sortie du transfert du système racine.<br> <pre class="code">$ ssh 10.42.3.42 'dump -0 -f - /' | restore -r -f - DUMP: Date of this level 0 dump: Tue Feb 22 15:50:12 2005 DUMP: Dumping /dev/hda3 (/) to standard output DUMP: Label: debian DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 547312 blocks. DUMP: Volume 1 started with block 1 at: Tue Feb 22 15:50:14 2005 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Volume 1 completed at: Tue Feb 22 15:51:43 2005 DUMP: Volume 1 546590 blocks (533.78MB) DUMP: Volume 1 took 0:01:29 DUMP: Volume 1 transfer rate: 6141 kB/s DUMP: 546590 blocks (533.78MB) DUMP: finished in 89 seconds, throughput 6141 kBytes/sec DUMP: Date of this level 0 dump: Tue Feb 22 15:50:12 2005 DUMP: Date this dump completed: Tue Feb 22 15:51:43 2005 DUMP: Average transfer rate: 6141 kB/s DUMP: DUMP IS DONE </pre> Restore crée toujours un fichier <tt>restoresymtable</tt> qui peut être supprimer une fois que vous êtes sûr qu'aucune erreur n'est intervenue lors de la restauration du système. Une fois le système racine copié, procédons maintenant à chaque sous-système monté, en commençant par <tt>/usr</tt> (supposant que votre répertoire courant est la racine du futur système de fichiers). <pre class="code">mount /dev/xxx ./usr cd ./usr ssh targetPC 'dump -0 -f - /usr' | restore -r -f - </pre> L'opération mount-cd-dump/restore est à répéter pour tous les répertoires que vous pouvez avoir. Pour ce qui est de <tt>/usr/share</tt> (qui avait sa propre partition sur le PC source), vous pouvez, après l'étape précédente, faire un chdir vers <tt>./usr/share</tt> (notez le « . ») et ensuite répéter <pre class="code">ssh targetPC 'dump -0 -f - /usr/share' | restore -r -f -</pre> Restore se plaint uniquement si des fichiers existent déjà dans le système à restaurer, donc si vous mettez deux partitions différentes (sur le PC source) en une seule (sur le PC cible) il n'y a pas de problème. Cloner un PC entier prend à peine une heure avec ssh et des cartes réseaux 100MB (un gain de performance est à noter avec un câble croisé). <p> <strong>Note: </strong>Pour réaliser le dump d'un système, il n'est pas nécessaire qu'il soit monté. Vous pouvez aussi passer <i>le nom de la partition </i>, tel que <big><tt>/dev/hda6</tt></big>, en lieu et place du nom de répertoire de la partition montée. </p> <h1>Alternative : <tt>netcat</tt> </h1> <p> Une alternative à ssh est d'utiliser <tt>netcat(1)</tt>, dont l'abbréviation est nc. Netcat est un couteau suisse facile à mettre en oeuvre, fonctionnant en mode client-serveur sur TCP/IP qui permet de créer un tuyau à travers le réseau. Les exemples précédents sont modifiés comme suit. Disons que la partition montée sur <big><tt>/var/backup</tt></big> doit être transférée via <big><tt>dump/restore</tt></big> depuis le PC source vers le PC cible. </p> Sur la machine cible, créez une instance de <tt>netcat</tt> qui écoute via <tt>-l</tt> et qui redirige sa sortie vers <tt>restore</tt>. <pre class="code">nc -l -p 2000 -q 1 | restore -r -f -</pre> Sur la machine source, créez une autre instance de <tt>netcat</tt> qui récupère l'entrée depuis le pipe créé précédemment où <tt>target-IP</tt> représente l'adresse IP du PC cible. <pre class="code">dump -0 -f - /var/backup | nc <target-ip> 2000</pre> L'option <tt>-q</tt> est censée arrêter <tt>netcat</tt> après avoir reçu l'identifiant de fin de fichier, mais lors de mon essai, il m'a fallu le stopper manuellement. Je recommande d'utiliser <tt>ssh</tt> malgré tout. <h1> Faire le ménage </h1> Félicitations, si vous êtes arrivés jusqu'ici, vous avez cloné votre système. Maintenant il est temps de rendre cette machine utilisable. La première chose à faire est de mettre à jour <tt>/etc/fstab</tt> avec les nouveaux réglages, sinon vous ne pourrez pas utiliser les partitions clonées. Si l'adresse IP change, celle-ci doit aussi être mise à jour (<tt>/etc/hosts</tt>, <tt>/etc/network/interfaces</tt> sous debian). La prochaine étape importante concerne la configuration du démarrage qu'il sera pratiquement toujours impératif de mettre à jour. Avec <tt>lilo</tt>, éditez <tt>/etc/lilo.conf</tt> (en particulier l'option <tt>root=...</tt>) puis exécutez <tt>lilo -v</tt>. Sous grub, éditez <tt>/boot/grub/menu.lst</tt> (ou <tt>/boot/grub/grub.conf</tt>, tout dépend sur lequel pointe le lien symbolique) puis entrez <tt>grub</tt>, <pre class="code">grub> root (hd0,xxx) ... filesystem is ... grub> setup (hd0) ... lots of output here grub> quit </pre> ou lancez <tt>grub-install /dev/xxx</tt> où <tt>xxx</tt> est votre disque dur. Ici, vérifiez les réglages pour <tt>root (hdn,xx)</tt> et <tt>root=/dev/xxx</tt>. <p> Dans le cas probable où vous avez un matériel plus récent dans votre PC cloné, vous pouvez mettre à jour les <i>réglages pour votre noyau personnalisé</i>. Si vous utilisez des systèmes qui proposent de nombreux modules pré-configurés (tels que RedHat, SuSE, Mandrake, Fedora...) ne vous inquiétez pas, il est fort probable qu'il existe un module correspondant. Sinon, <tt>lspci -vv</tt> et compilation du noyau habituels tels que décrits ailleurs vous permettront d'arriver à vos fins. Si votre carte graphique est différente, mettez à jour <tt>/etc/X11/XF86Config-4</tt> (ou <tt>xorg.conf</tt> sous RH/Fedora) pour le prendre en compte, sinon vous n'obtiendrez aucun signal. Si possible, utilisez des outils graphiques pour configurer X en démarrant en niveau 3 si vous disposez de tels outils. Sous Debian, quelques investigations sont nécessaires. Je fus chanceux de découvrir que le driver avait changé de <tt>r128</tt> vers <tt>radeon</tt> et que cela fonctionnait. </p> <a name="sec:Other-systems"></a> <A NAME="370lfindex4"> </A> <H2>Autres systèmes</H2> <p> Ce tutoriel explique la procédure de clonage pour les systèmes de fichiers <tt>ext2/ext3</tt>. Des commandes similaires conviennent pour de nombreux autres systèmes Unix-like. Par exemple, plusieurs Unix tels que FreeBSD, HP-UX, IRIX disposent aussi des commandes <tt>dump/restore</tt> ; sous Solaris ce sont <tt>ufsdump/ufsrestore</tt>. Il existe des systèmes de fichiers qui n'offrent pas la fonctionnalité « dump », c'est le cas de ReiserFS. Dans ce cas, il est conseillé d'utiliser <tt>rsync.</tt> Voir [<a href="#key-2">1</a>] pour un rapport concernant l'utilisation de <tt>rsync</tt> lors d'une procédure de clonage d'un système Linux. </p> <A NAME="370lfindex5"> </A> <H2>Références </H2> <dl compact="compact"> <dt><a name="key-2">[1]</a> <i>''<a href="http://www.linuxgazette.com/issue83/okopnik.html">Replicating a Linux System - Yet Another Method</a></i>.'' Ben Okopnik, Linux Gazette Issue 83, October 2002. </dt> </dl> <!-- vim: set sw=2 ts=2 et tw=74: --> <!-- BODY_OF_THE_ARTICLE_STOP --> <!-- 2pdaIgnoreStart --> <A NAME="talkback"> </a> <h2>Talkback form for this article</h2> Every article has its own talkback page. On this page you can submit a comment or look at comments from other readers: <center> <table width="250" border=0><tr><td> <div class="tbbutton"><A class="nodec" href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=370"> talkback page </a></div> </td></tr></table> </center> <br clear="all"> <HR size="2" noshade> <table width="250" border=0><tr><td> <div class="bbutton"><a class="nodec" href="../../index.shtml"><--, LF Sommaire</a></div> </td><td> <div class="bbutton"><a class="nodec" href="index.shtml">Sommaire de ce numéro</a></div> </td></tr></table> <br clear="all"> <HR size="2" noshade> <!-- ARTICLE FOOT --> <CENTER><TABLE WIDTH="98%" summary="footer"> <TR><TD ALIGN=CENTER BGCOLOR="#bdc6d5" WIDTH="50%"> <A HREF="../../common/lfteam.html">Site Web maintenu par l´équipe d´édition LinuxFocus</A> <BR><FONT COLOR="#1111aa"><a href="../../common/copy.html">© Gerrit Renker</a><br>"some rights reserved" see <a href="../../license/index.shtml">linuxfocus.org/license/</a><br><a href="http://www.linuxfocus.org">http://www.LinuxFocus.org</a></FONT> </TD> <TD BGCOLOR="#bdc6d5"> <!-- TRANSLATION INFO --> <font size=2>Translation information:</font> <TABLE summary="translators"> <tr><td><font size="2">en --> -- : Gerrit Renker <small><gerrit.renker(at)gmx.de></small></font></td></tr> <tr><td><font size="2">en --> fr: Florent Morel <fleuh-(at)-free.fr></font></td></tr> </TABLE> </TD> </TR></TABLE></CENTER> <p><font size=1>2005-04-09, generated by lfparser version 2.52</font></p> <!-- 2pdaIgnoreStop --> </BODY> </HTML>