# [Copie] Machine A sur machine B identiques

## doum

Salut a tous.

J'ai enfin reussi a installer la gentoo, apparement pas de probleme pour l'instant.

J'ai une autre machine strictement identique a la premiere (2 pc Dell meme modele), sur laquelle je dois aussi installer une gentoo.

J'ai cherché sur le forum si il etait possible de copier la distrib du PC1 vers le PC2 mais j'ai rien trouvé (beaucoup de reponse pour une copie de disque a disque).

Est il possible de copier l'integralité du disque dur gentoo du PC1 vers le disque dur du PC2 via le reseau, le but final etant que sur le PC2 il y ait un minimum de chose a changer avant qu'il marche (parametre reseau -> ip, domain name par exemple, quelques autres conneiries)

Merci

PS: j'ai bien entendu partitionné et monté le disque dur du PC2 a l'identique du PC1 en utilisant le cd gentooLast edited by doum on Tue Jan 27, 2004 9:27 am; edited 1 time in total

----------

## sebbb

Bonjour,

Si  tu as une 3ème machine avec un ftp + dhcp y'a ce logiciel : G4U (c'est le premier dans la liste de google je crois...)

Il permet, avec un boot  sur disquette de créer une image d'un disque / d'une partition et le mettre ça sur un ftp, puis sur l'autre d'aller récupérer cette image...

Voila :)

----------

## doum

Malheureusement, pas de ftp/dhcp dispo...faut que je fasse ca autrement, mais merci pour ton aide

----------

## sebbb

Tu peux peut-etre créer u  fichier image sur ta machine 1 (.tbz2 par exemple) puis un scp (cp par ssh) depuis la machine 2 puis du décompresse, mais ce que je ne sais pas c'est si l'on peut faire une image correcte d'un système lorsque celui-ci est en fonctionnement... Sinon tu est obligé de passé par le live-cd...

Autre question, quelle est la capacité de stockage d'un système sur live-cd, si tout est mis dans la ram, je ne pense pas que tu ais assez de ram pour stoker l'image (pour le scp), sans compté ce qu'il faut pour décompresser...

Voila, je vois pas autre chose si ce n'est d'utiliser un logiciel du type "Norton Ghost"...

----------

## CooLoS

Il y a partimage comme logiciel qui marche bien .

www.partimage.org

Ils fournissent un cd de boot avec qui marche bien et il est possible de transferer le contenu du PC1 vers le PC2 via le reseau  :Smile: 

Voila

----------

## yoyo

Je vais peut-être dire une bêtise, mais bon ... (ça ne sera ni la première, ni la dernière:  :Mr. Green:  )

Pourquoi ne pas faire l'install du système avec le liveCD (que tu as déjà dans la poche) jusqu'au moment où tu définis tes paramètres réseau (et avant le chroot). Ensuite, tu montes ta 2ème babasse (chaque partition) et tu fais le "cp kivabien" (conserve les attributs etc.) sur les points de montage kivontbien de ta nouvelle babasse.

Enfin, tu chroot, "emerge baselayout etc." (il y a un thread assez complet sur ce forum qui décrit toutes les opérations à effectuer), installation du sysloader (grub ou autre) ...

En fait, je ne vois pas l'utilité de passer par ssh ou de faire une image sur un réseau local  :Confused: 

----------

## doum

yoyo, il me semble que la definition des parametres reseaux se fait bien apres le chroot du depart...en fait vu que je crée les partitions, les dossiers et que je les monte, a peu de choses pres je fais tout ce qu'ils disent dans la doc jusqu'au chroot.

Eux en plus extraient le stage 1, moi je voudrais au lieu de faire ca copier mon PC1 sur le PC2 (avec les outils disponibles donc tar, scp, cp...).

Le but etant de n'avoir rien a compiler, par exemple pour au final faire des installs dans des salles de machines.

J'ai pensé aussi a créer des tar des partitions sur le CD1, puis a les recuperer avec scp, mais le probleme c'est que ca prends enormement de place sur le PC1. Ne serait il pas possible de faire tout en "direct"

J'avais fait ca sur le PC2 mais ca marche pas...il me remplit / a 100% (alors qu'il est utilisé a 2% sur le PC1)

```

cd /mnt/gentoo

scp -p -r -v root@IP_PC1:/ .

```

apres avoir monté les partitions du PC2 dans /mnt/gentoo (home, usr...)

----------

## broly

moi j'aurai utilisé un cd sysrecue lancé parted sur les 2 et terminés.

va voir la : http://www.sysresccd.org pour plus d'info.

----------

## doum

Ca sera la solution de secours, mais je voudrais vraiment pouvoir le faire sans outils exterieur, juste en utilisant des commandes de bases quoi.

Je suis sur que ca doit etre faisable avec tar and co...

----------

## yoyo

 *doum wrote:*   

> yoyo, il me semble que la definition des parametres reseaux se fait bien apres le chroot du depart...en fait vu que je crée les partitions, les dossiers et que je les monte, a peu de choses pres je fais tout ce qu'ils disent dans la doc jusqu'au chroot.

 

C'est curieux, je viens de consulter la doc et le chapitre de configuration du réseau est numéroté 4 alors que le chapitre du chroot est numéroté 8   :Confused: 

On y parle de ping avant même la création de partition ...

EDIT : Pourrais-tu lire ce thread et éditer ton 1er post pour faire correspondre le titre à ce qui y est décrit ??

Merci

----------

## ghoti

 *doum wrote:*   

> Je suis sur que ca doit etre faisable avec tar and co...

 

Tu as raison : si tu as une connexion ssh entre tes 2 machines, un tar "pipé" vers une commande ssh qui lance un second tar sur la machine cible devrait faire l'affaire. Par exemple, pour copier la partition racine (en excluant les autre partitions "montées", c-à-d, en restant sur le même filesystem) :

```
tar -clf- -C / --atim --exclude=proc/ . | (ssh hostname_cible tar -xvpf- -C /)
```

Bon, il faut un peu adapter à ton cas, notamment tes paramètres de connexion ssh ainsi que les répertoires à exclure (dev, sys si tu es en 2.6, ...), mais tu devrais y arriver.

En tous cas, ça marche tel quel chez moi : je viens de faire un test concluant sur un petit répertoire.

En fait, c'est ma procédure fétiche pour le clônage  :Smile: 

Le gros avantage, c'est qu'il n'y a pas de création véritable d'archive : tout se passe au niveau du "pipe" !

Sauf pour ce qui concerne ssh, j'ai expliqué la procédure et documenté les paramètres dans ce post.

[EDIT]

Si tu n'as pas de serveur ssh sur ta seconde machine (j'ignore s'il est prévu sur le LiveCD), tu peux peut-être essayer de booter sur une autre distrib "Live", genre Knoppix ...Last edited by ghoti on Mon Jan 26, 2004 8:48 pm; edited 1 time in total

----------

## J4nus

fais un tar du premier disque, boot le 2eme pc avec le livecd, fais ta table de partitions et formate celles-ci. Ensuite, il ne te reste plus qu'a transférer le tar (par ftp par exemple) sur une partition et l'extracter

----------

## ghoti

 *J4nus wrote:*   

> Ensuite, il ne te reste plus qu'a transférer le tar (par ftp par exemple) sur une partition et l'extracter

 

Ben oui, mais justement, cela lui pose un problème de place que résoud précisément la méthode du "pipe" que je propose !  :Wink: 

----------

## TGL

Moi je l'aime bien ghoti ton tar pipé, j'y avais jamais pensé.   :Rolling Eyes: 

----------

## J4nus

ok ava c'est une bonne idée

----------

## doum

Le titre est mieux? Proposez moi quelque chose sinon.

Bon pour le probleme, j'ai taré la machine A mais je l'ai fait bourrin, je sais pas ce qu'il fallait exclure, puis je l'ai recupérer par ssh depuis la machine B

```

scp root@IP_A:/backup.tar .

```

puis je l'ai extrait.

Mais a mon avis ca va pas marcher a cause du tar bourrin.

Y'a-t-il un moyen de tarer tout ce qu'il faut d'un coup (c'est a dire pas que le / mais aussi /usr et /home qui sont montés sur 2 autres partitions)?

Apres avoir recuperer le tar et l'avoir decompresser, j'ai donc tout mes fichiers dans /mnt/gentoo. Faut faire quoi apres? (j'avais cru lire un emerge je sais pas quoi dans un autre post) Ensuite faut reinstaller grub c ca?

Si deja j'arrive a le faire comme ca ca sera niquel, apres je verrais si on peut le faire via une connexion ssh (pas sur que on puisse le faire avec le live cd)

----------

## Bastux

Bravo ghoti, il faut quand même pouvoir la pondre, la commande avec le tar pipé.

Sinon, j'allais dire exactement la même chose que yoyo, mais trop tard il l'a dit avant  :Smile: 

Tu bootes sur un LiveCD, tu configure le réseau, et après une simple copie de partition suffit

Sinon ce que tu peux faire aussi, c'est une copie de DD brutale, je crois qu'il y a des utilitaires qui font ça mais je ne les connais pas.

Il y a déjà eu un thread qui parlait de ça.

----------

## doum

Je suis en dhcp, la config du reseau se fait au boot sur le live cd, ensuite je monte les partochs, je les formates et je recupere le tar, ca c'est ce que j'ai fait.

Ensuite faut juste que je modifie 2 fichiers qui changent sur les becanes (/etc/hostname par exemple)

Mais je pense que la j'ai oublié des trucs, voir message du dessus.

Merci a tous en tout cas pour votre aide

----------

## sebbb

 *doum wrote:*   

> [...]
> 
> Y'a-t-il un moyen de tarer tout ce qu'il faut d'un coup (c'est a dire pas que le / mais aussi /usr et /home qui sont montés sur 2 autres partitions)?
> 
> [...]

 

Ben comme le dis ghoti:

```
tar -clf- -C / --atim --exclude=proc/ . | (ssh hostname_cible tar -xvpf- -C /)
```

Je pense que les répertoires à exclure sont les suivants :

- /proc

- /dev

- /mnt

J'en vois pas d'autre...

Pour les partitions montées comme /usr et /home, et ben à partir du moment où elle sont montées y'a pas de pb :)

Et su ta machine B il faut que tu les montent aussi avant la decompression...

Mais sa solution est mieux que le scp... Le fichier n'est pas créé, c'est décompressé sur B directement....

Mais sinon ta métode est bonne aussi :)

A+

----------

## doum

 *sebbb wrote:*   

>  *doum wrote:*   [...]
> 
> Y'a-t-il un moyen de tarer tout ce qu'il faut d'un coup (c'est a dire pas que le / mais aussi /usr et /home qui sont montés sur 2 autres partitions)?
> 
> [...] 
> ...

 

Je sais que sa methode est bien mieux  :Very Happy: , mais faut sshd sur le livecd, pas sur qu'il y soit, du coup je teste deja comme ca :d

Si on exclue mnt, dev et proc sur A, comment on les recupere sur B, faut faire quelque chose de special?

----------

## sebbb

 *doum wrote:*   

> Je sais que sa methode est bien mieux :D, mais faut sshd sur le livecd, pas sur qu'il y soit, du coup je teste deja comme ca :d

 

Si si il y est sur le live-cd, une fois que tu as configurer les réseaux du live-cd tu lances :

```
/etc/init.d/sshd start
```

 et c'est bon :)

 *doum wrote:*   

> Si on exclue mnt, dev et proc sur A, comment on les recupere sur B, faut faire quelque chose de special?

 

Ben pour /proc c'est dans le /etc/fstab...

A la main ça donne :

```
mount -t proc proc /proc
```

Pour /dev, j'espère ne pas dire de bétise en disant que c'est le noyau qui gère ça et /mnt c'est les périfériques externent montés, le cdrom/dvd, un disque windows, la disquette, etc...

Je ne sais pas si c'est une bonne idée de tout copier :)

----------

## doum

Exact pour le sshd ca marche...je vais tenter.

Par contre tu dis d'exclure plus de chose que la commande de ghoti ne fait non.

Ca donnerait ca:

tar -clf- -C / --atim --exclude=proc/ --exclude=mount/ --exclude=dev/ . | (ssh hostname_cible tar -xvpf- -C /mnt/gentoo)

Ou j'ai faut...ensuite je chroot dans /mnt/gentoo et je reinstalle grub puis reboot et c'est bon?

----------

## sebbb

Vi, moi je dirrai que c'est ça...

N'oublie pas de monter /proc avant le chroot (cf. le manuel d'install juste avant le chroot)

----------

## doum

Je teste et je vous dit  :Very Happy: 

----------

## doum

Ca passe pas...

il me dit: tar: Bad Option: -xvpf-

----------

## sebbb

Heu, je viens de lire le manuel de tar, je ne sais pas si l'option -l va avec ce que je t'ai dis pour /usr et /home....

Je ne connais pas assez bien tar...

Si ghoti ou un autre passe par là, peut-il confirmer ???

Sinon pour l'erreur, essaye de ne pas mettre le - devant et derrière :

```
tar czpf -C / --atim --exclude=/proc/ --exclude=/mount/ --exclude=/dev/ . | (ssh hostname_cible tar xzpf -C /)
```

Si tu rajoute z tu as une compression gzip (faite peut-etre gagner du temps ?) et le p me semble indispensble, il permet de garder les permissions sur les fichiers...

Voila....

----------

## Bastux

 *doum wrote:*   

> Ca passe pas...
> 
> il me dit: tar: Bad Option: -xvpf-

 

enlève le dernier tiret :

```

-xvpf

```

----------

## doum

C'est pareil dans vos 2 cas...la syntaxe de la ligne doit faire foirer le tar.

Bastux: tar: Bad Option: -xvpf

sebbb: tar: Bad Option: -xvzpf

----------

## ghoti

Bien, bien, bien : peut-être que quelques remarques complémentaires pourraient clarifier tout ça !  :Smile: 

Tout d'abord, la syntaxe ssh que j'ai utilisée suppose que :

- la connexion se fait uniquement sur base des clés et sans vérifier le password.

- la connexion se fait en root (et celui-ci est accepté par ssh !)

Bon, d'accord, ce n'est pas très "secure" comme approche mais c'était surtout pour simplifier la syntaxe déjà assez compliquée comme ça  :Wink: 

Il y a probablement moyen d'adapter cette partie pour tenir compte d'une config différente mais je n'ai pas testé.

Ensuite, concernant les 2 commandes "tar" :

1. Les "tirets" qui précèdent les options signifient qu'on utilise la nouvelle syntaxe de "tar", laquelle est totalement différente de l'ancienne (sans "tirets"). 

Il est d'ailleurs impossible de mélanger les 2 syntaxes !

En gros, dans la syntaxe sans tiret, toutes les options forment un seul bloc, dans n'importe quel ordre.

Les argument éventuellement admis par les options doivent suivre le bloc d'options dans l'ordre de celles-ci.

Dans la syntaxe avec tiret, chaque option qui admet un argument doit être directement suivi de celui-ci. 

Chaque option doit être précédée d'un tiret mais celles qui n'ont pas d'argument peuvent être regroupées avec un seul tiret.

Seule la dernière option du bloc peut avoir un argument.

La syntaxe que j'ai utilisée est celle "avec tiret" : si on supprime un seul tiret, cela remet tout en cause !!!

2. Maintenant, la question du "tiret_qui_suit" :

- dans le tar de gauche, on a "-clf-"

Le tiret de droite est l'argument de l'option "f". Il signifie que le nom de l'archive n'est pas un fichier mais bien le canal de sortie standard (STDOUT).

- c'est analogue dans le tar de droite : l'archive à extraire (option "f") est le canal d'entrée standard (STDIN)

Au total le tar de gauche envoie son output sur la sortie standard, laquelle est redirigée vers l'entrée standard par le "pipe" et prise en input par le second tar.

Petite étape intermédiaire : avec ssh, l'input est recopié sur l'input de la machine cible.

Tout ça pour bien montrer qu'il n'est absolument pas question de "chipoter avec les tirets" !  :Laughing: 

3. Les options proprement dites

- c'est vrai qu'on peut envisager, en plus, de gzipper l'archive.

C'est un choix à faire en fonction du système : c'est très certainement utile avec des processeurs rapides et une connexion lente mais il n'est pas certain que ce sera profitable entre deux 486 sur une liaison gigabit ...

A vous de voir !

- l'option "-l" limite l'opération au filesystem courant, c-à-d celui qui contient le répertoire à partir duquel commence l'archivage (fixé par l'option "-C" )

En son absence, tout ce qui est monté en dessous du répertoire courant sera également archivé : floppy, cdrom, samba, nfs ...

Si vous voulez archiver l'ensemble d'internet, surtout ne mettez pas de "l" !  :Wink:   :Laughing: 

Les "pseudo-systèmes" comme /proc et /dev sont considérés comme faisant partie du "filesystem courant". C'est pourquoi il faut les exclure. (--exclude)

Par contre, il ne faut pas exclure /mnt : son contenu représente les "points de montage" et sera sûrement utile sur la machine cible.

- Dans mon exemple, j'envisageais le clônage partition par partition.

Cependant, si on est prudent, le clônage peut se faire en une seule fois, en supprimant précisément l'option "-l" (mais en conservant les "exclude")

Pour cela, il faut que les "partitions système" (/usr, /home, ...) soient montées sur les 2 machines et que tout ce qui ne doit pas faire l'objet d'un clônage soit démonté (en principe, tout ce qui est /mnt/* ...)

Dans ce cas, il y a une copie parfaite de toute l'arborescence de la machine A vers la machine B et la ventilation vers les différentes partition se fait bien sûr de manière transparente en fonction des "mountages".

Dernière chose : dans le tar de droite, l'option "-C" indique le répertoire de destination de l'extraction. 

Bien entendu, si on utilise le LiveCD sur la machine-cible, on mettra /mnt/gentoo ! 

Bon, il y en a trois qui roupillent là-bas dans le fond !

M'en fous : j'ai les noms !  :Mr. Green:   :Laughing: 

----------

## ghoti

 *TGL wrote:*   

> Moi je l'aime bien ghoti ton tar pipé, j'y avais jamais pensé.  

 

Hé hé : "Le Système Linux" (Welsh & Kaufman) O'Reilly édition 1995  :Wink: 

----------

## TGL

 *ghoti wrote:*   

>  *TGL wrote:*   Moi je l'aime bien ghoti ton tar pipé, j'y avais jamais pensé.   
> 
> Hé hé : "Le Système Linux" (Welsh & Kaufman) O'Reilly édition 1995 

 

Bon bah j'ai vraiment pas d'excuse alors, j'ai celle de 97, et je pense que ça y est aussi, puisque c'est marqué "2ème édition, révisée & augmentée", et non pas "2ème édition, amputée & massacrée". Enfin bref, comme quoi, je devrais le relire un peu ce bouquin tiens. Allez, je le mets sur ma table de nuit, ça va aider.

----------

## doum

Bon ben ca marche, merci a tous.

Pour la copie en elle meme, je n'ai pas testé le pipage des 2 tar par manque de temps, mais j'ai taré mon systeme puis j'ai recuperer le tar via scp puis decompressé sur la machine B.

Ensuite y'a qu'a monter proc, faire le chroot comme dans l'install, modifier les 2-3 fichiers avec le nom de machine (/etc/hosts par exemple) et installer le bootloader.

Et la machine marche sans aucun soucis.

J'ai quand meme testé le tar via ssh sur un petit repertoire pour voir et ca marche apparement sans soucis.

Gain de temps tres appreciable dans le cas ou on a des machines identiques.

----------

## ghoti

 *doum wrote:*   

> Gain de temps tres appreciable dans le cas ou on a des machines identiques.

 

En réalité, il suffit même que l'architecture soit identique : pas question de clôner un x86 sur un ppc, en tous cas pour les binaires !

Par contre, l'organisation physique des 2 machines peut être fort différente, par exemple :

- nombre et taille des partitions.

- type des filesystems

- dans une certaine mesure, type de matériel. ici, c'est un peu plus délicat : il faudra probablement ajuster le noyau en fonction du cpu et des différents chipsets ...

----------

