Forum Astuces.divers [Admin] Transférer son système d'une machine à une autre

Posté par  (site web personnel) .
Étiquettes : aucune
0
2
déc.
2004
Ça peut vous arriver un jour : vous avez un système vital sur une machine, vous devez envoyer cette machine ailleurs (en SAV par exemple) et vous n'avez aucune envie de vous taper une install complète de la machine de spare avec reconfiguration de tous les services à la clef.
Voici comment j'ai procédé :
Commencez par connecter les deux machines directement l'une à l'autre au moyen d'un câble croisé (ça a son importance); puis booter sur chacune un système sur LiveCD (ce qui permet de ne pas monter les partitions à ne pas copier telles que /dev, /proc etc.).
Pour ma part j'ai utilisé une Mandrakemove.
Sur la machine qui recevra le nouveau système, créer les partitions comme vous l'entendez, et sur les deux machines, montez le réseau comme ça vous arrange (puisqu'on a une connection directe) et l'arborescence du/des disque(s) dur(s) sous /mnt.
Sur la machine source, (et là ça peut devenir spécifique à la Mandrakemove) virez le lien symbolique /etc/sshd.conf et copiez le sshd.conf de /image (image loopback montée en read-only) vers /etc (vous pourrez maintenant l'éditer). Passez l'option PermitRootLogin à Yes et lancez sshd. D'où l'importance du câble croisé : on a une machine sans mot de passe root ni user avec des données vitales et un ssh ouvert de partout, autant limiter les risques.
Mettez un mot de passe à root, pour pouvoir vous authentifier depuis l'autre machine. puis faites un scp brutal depuis la machine destination :
scp -r root@ip.de.la.source:/mnt/* /mnt
Voilà votre système est copié, il n'en est pas pour autant fonctionnel.
Il faut maintenant nettoyer les fichiers /etc/modules.conf et /etc/modprobe.conf (afin de donner les bons modules au kernel) puis générer un nouvel initrd pour votre kernel.
Enfin il vous faut vérifier que vos fichiers /etc/fstab et la conf de votre boot loader invoquent les bonnes partitions et installer le boot-loader (on part d'un système vierge).
Et voilà vous venez de transférer un système en une grosse heure, sans vous retaper le conf de Postfix, Cyrus, Samba, Apache, MySQL, PHP ni avoir à sortir les données de vos utilisateurs de la bande de sauvegarde que vous tenez évidemment à jour.
  • # scp?

    Posté par  (site web personnel) . Évalué à 2.

    J'sui pas sur qu'utiliser directement scp pour ca soit une bonne idée
    Genre les devices, les liens et consorts ne sont pas conservé: tu te retrouve avec des fichiers en triple exemplaire à cause de ces liens.
    Tar serait plus aproprié pour ce genre de chose (ou d'autres format mais j'en connais pas qui supporte les devices, les pipes etc)
    Exemple:
    ssh root@ip.de.la.source "cd /mnt; tar c" |tar x -C /mnt
    • [^] # Re: scp?

      Posté par  (site web personnel) . Évalué à 1.

      ouppppsss t'as raison j'ai oublié que je me suis ramassé la face avec scp et que j'ai finalement utilisé rsync :]

      j'ai estimé (peut être à tort) que si, en plus de chiffrer avec ssh, il fallait compresser pour décompresser immédiatement, alors que j'avais une liaison gigabit directe entre les machine, j'y perdrais du temps.

      j'ai donc, en fait, fait ça :
      rsync -a -e ssh root@ip-source:/mnt/* /mnt

      Rien n'empêche, bien sur, de passer -az pour compresser en plus à la volée (et c'est plus élégant : on fait ça sans "|") ;-)
      • [^] # Re: scp?

        Posté par  (site web personnel) . Évalué à 1.

        Le probleme quand t'es en gigabit (et meme 100mbits) avec ssh
        c'est que t'es plus limite par la connection, mais par le processeur qui n'arrive pas a coder aussez vite.
        Et pis aussi le disque dur qui arrive pas a suivre en fait :)
        Mais meme en 100mbits, quand je fais un transfert de (ou vers? je sais plus) mon EPIA 800, il est a 100% cpu et je fais "que" 3mo/s alors que je suis sense pouvoir faire 10 (on va pas dire 12 quand meme qui est surtout theorique)
        • [^] # Re: scp?

          Posté par  . Évalué à 0.

          oué le souci, c'est effectivement le proc. (normal, crypter c'est un peu lourd...)/
          en plus mon dd il monte a pas plus que 19 MO/secs ce qui est déja énorrrrrme....(le std c 16 Mo/secs...(hdparm -t m'a refilé c'te valeur)
          remarque, avec le super raid de la mort et un athlon 64 ca pourrait etre correct....
          m'enfin, c'est une bonne astuce, qd meme ,et merci beaucoup.
      • [^] # Re: scp?

        Posté par  . Évalué à 1.

        tar -c | tar -x
        Dans cette commande il n'y a aucune compression. La commande tar concatène les fichiers. L'option j ou z permet d'ajouter une compression/décompression.
    • [^] # Re: scp?

      Posté par  (site web personnel) . Évalué à 2.

      >ssh root@ip.de.la.source "cd /mnt; tar c" |tar x -C /mnt

      Tar malheureux, surtout pas!

      On dit qu'il existe deux sortes d'admin Unix, ceux qui se sont fait avoir par tar et ceux qui vont se faire avoir :)

      Quand tar ajoute un fichier à l'archive, il note sa taille, si le fichier change entre les deux étapes, alors tu es sur que ca va décaller quand tu vas vouloir détarer l'archive. Donc, sur un systeme en cours de fonctionnement, ne jamais utiliser tar!

      CPIO est la pour ca!
      • [^] # Re: scp?

        Posté par  (site web personnel) . Évalué à 2.

        Donc, sur un systeme en cours de fonctionnement, ne jamais utiliser tar!
        hors contexte : c'est bien pour s'affranchir de ces petites limitations qu'on a booté des liveCD puis monté les partoches sous /mnt :]
  • # G4L

    Posté par  (site web personnel) . Évalué à 2.

    G4L (ghost for linux) qui est base sur qparted fait encore mieux que ca pour copier le systeme de base
    en effet il suffit de creer l image du systeme grace a qparted ou directement grace au cd bootable et ensuite il y a une fonctionnalite pour deployer l image sur le reseau

    http://freshmeat.net/projects/g4l(...)
  • # Question a 2 cents

    Posté par  (site web personnel) . Évalué à 2.

    Pourquoi un ssh/scp alors que tes deux machines sont juste l'une en face de l'autre et plus connecté au reseau?
  • # Oui mais...

    Posté par  . Évalué à 1.

    C'est super sympa comme astuce mais si ta machine doit partir à la SAV, c'est peut êter qu'il y a une raison. Il n'est pas dit alors que tu puisse booter ;-)

    bon --> []
  • # dans le genre, y a netcat, mirrordir aussi

    Posté par  . Évalué à 2.

    dans le genre, y a netcat, mirrordir aussi, pas forcement l'idéal pour ce pb spécifique de transfert systeme en réseau (rsync me semble plus adapté).

    mais netcat et mirrordir j'aime bien, assez simple d'usage.

    petite doc perso sans prétention sur netcat + tar :

    http://smitters.univ-lille3.fr/wiki/SystemeNetcat

    quant à mirrordir, il permet aussi facilement de synchroniser des repertoires

    => # apt-get install mirrordir

    ---
    mes 2 cts
    Arnaud
    • [^] # Re: dans le genre, y a netcat, mirrordir aussi

      Posté par  (site web personnel) . Évalué à 2.

      Pour netcat ya une astuce (la seule que j'ai écrite) qui est déjà passée d'ailleurs: http://linuxfr.org/tips/296.html(...)

      Personnellement quand je dois dupliquer une machine, je fais comme ça (en admettant qu'il n'y ait que hda à copier et que les disques soient de même taille):
      machine_à_dupliquer# nc -l -p 42 < /dev/hda && md5sum /dev/hda
      machine_cible# nc -q0 machine_à_dupliquer 42 | tee /dev/hda | md5sum
      (j'ai pas trouvé comment calculer le md5 facilement en envoyant le fichier)

      En fait c'est probablement très similaire à ce que fait g4u mais je l'ai jamais utilisé. Faire ça sur un système dont les partitions sont montées en écriture n'est probablement pas une bonne idée (et même read only ça risque de pas trop marcher sur la machine cible).

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.