====== Le clonage ====== ===== Le repérage des partitions ===== Pour cloner un disque dur, le plus simple est de brancher les 2 disques durs (source et cible) sur la même machine, et d’utiliser un LiveCd, puis d’utiliser la commande dd. Personnellement je ne branche que le disque source afin de savoir comment il sera nommé dans /dev/ (sda par exemple), et je repère les partitions présentes (/dev/sdaX à /dev/sdaY) . Il suffit de les monter et de fouiller un peu pour savoir laquelle est « /boot » (sda1), laquelle est « / » (sda2) et laquelle est « /var » (sda5), et de noter l’information puisque dans mon cas, je compte ensuite agrandir la partition « /var », et réparer mon grub, qui comme vous le verrez n’est pas toujours directement à jour après ce genre de migration.Puis je branche le disque cible sur la machine (en usb dans mon cas via le « Linkin’ Kit Usb 2.0 to IDE & SATA Cable ») et repère ici encore les partitions /dev/sdb (généralement une seule, vide). ===== La copie physique ===== On utilise donc la commande dd : dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror status=progress * IF pour la source, OF pour la cible (ici sda est la source et sdb la cible). * notrunc signifie «ne pas tronquer le fichier en sortie». * noerror signifie de continuer en cas d’erreur. Normalement, dd s’arrête en cas d’erreur. Si vous vous interrogez sur un disque dur, si vous vous demandez s’il fonctionne ou pas, vous pouvez tenter de l’utiliser, à titre de test, comme lecteur source de la commande dd. Vous devriez obtenir une erreur s’il ne fonctionne pas. Les lecteurs cibles en revanche doivent être vraiment en très mauvais état pour provoquer une erreur due à dd. * dd verbose **EDIT : Il suffit maintenant d’ajouter status=progress à la fin de la commande dd (donc tout le paragraphe ci-après a été remplacé par l'utilisation « status=progress »)**. La commande dd ne possède pas de verbose, on ne peut donc pas savoir où en est la copie. Il existe cependant une astuce pour voir où en est le processus pendant qu'il tourne. Dans un autre terminal, on récupère le process ID : ps -ef | grep dd On obtient une ligne ressemblant à : root 5187 5010 6 Dec21 pts/0 00:54:08 dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror Il ne reste plus qu'à lancer cette commande pour obtenir des infos sur le PID 5187 toutes les 120s watch -n 120 kill -USR1 5187 Et on peut voir la progression de la copie sur le terminal exécutant la commande dd : ubuntu@ubuntu:~$ sudo dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror 629694177+0 enregistrements lus 629694177+0 enregistrements écrits 322403418624 octets (322 GB) copiés, 54363,8 s, 5,9MB/s On peut également sauver l’image du disque sous forme d’iso mais je ne me suis pas penché sur la question et renvoie donc vers la Documentation officielle (Section 3.1 Réaliser l’image ISO d’un CD) ===== Redimensionner les partitions ===== Si le disque cible est plus grand, la place inoccupée n’apparaitra pas.En effet, si l’on passe d’un disque de 80Go à un de 2To par exemple, seul les 80Go copiés seront reconnus, et la place restante est gaspillée. On profite donc d’être sur le LiveCD pour lancer Gparted et éditer les partitions.A l’aide de resive/move, déplacer l’espace non alloué près de la (ou des) partition à agrandir, puis étendez cette partition sur l’espace disponible. Appliquez les opérations puis rebootez (quel beau franglais !) la machine sans le LiveCD. ===== Problème de boot ===== Si après reboot vous obtenez l’erreur suivante : Could not stat the resume device file 'chemin-vers-un-uuid-introuvable' please type in the full path name to try again or press ENTERto boot the system Rebootez à nouveau avec un LiveCD puis rendez vous sur /dev/disk/by-uuid/ pour savoir quel UUID correspond à notre partition « / » (la sda2 dans mon cas) : ls -l /dev/disk/by-uuid/ On édite menu.lst afin de faire correspondre l’UUID : nano /boot/grub/menu.lst Afin d’être sûr, on met à jour Grub : update-grub Ensuite, on édite la configuration de reprise système afin de remplacer l’UUID inexistant par celui relevé ci-dessus : nano /etc/uswsusp.conf Puis on reconfigure la reprise système : dpkg-reconfigure uswsusp Enfin, après un reboot, tout devrait être revenu à la normale ! ===== A travers le réseau ===== A tester : https://doc.ubuntu-fr.org/dd#creer_une_image_de_la_partition_d_une_autre_machine_en_reseau ===== Test en cours ===== En premier sur l’ordinateur **CIBLE** : sudo netcat -l -p 1234 | sudo dd of=/dev/sda bs=16k status=progress Sur l’ordinateur **SOURCE** : sudo dd if=/dev/sdb bs=16k | sudo netcat 192.168.1.54 1234 bs=4k semble plus rapide sur les ordinateurs récents (à tester 16k ?) Pour voir où en est la copie, voir ci-dessus « dd verbose » (ou ajouter « status=progress » ?) ===== Dump d’un RPI en marche ===== Commentaire trouvé sur https://blog.microlinux.fr/clonage-reseau-dd-ssh J’utilise ceci pour cloner la carte sd d’un raspberry distant vers un disque local : ssh pi@192.168.1.20 "sudo dd if=/dev/mmcblk0 | gzip -c" | gzip -cd | sudo dd of=/dev/sdb status=progress