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).
On utilise donc la commande dd :
dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror 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)
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.
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 tester : https://doc.ubuntu-fr.org/dd#creer_une_image_de_la_partition_d_une_autre_machine_en_reseau
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 » ?)
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