Table des matières

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
OLD_remplacé_par_STATUS_PROGRESS.txt
  1. La commande dd ne possède pas de verbose, on ne peut donc pas savoir où en est la copie.
  2. Il existe cependant une astuce pour voir où en est le processus pendant qu'il tourne.
  3. Dans un autre terminal, on récupère le process ID :
  4. ps -ef | grep dd
  5. On obtient une ligne ressemblant à :
  6. root 5187 5010 6 Dec21 pts/0 00:54:08 dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror
  7. Il ne reste plus qu'à lancer cette commande pour obtenir des infos sur le PID 5187 toutes les 120s
  8. watch -n 120 kill -USR1 5187
  9. Et on peut voir la progression de la copie sur le terminal exécutant la commande dd :
  10. ubuntu@ubuntu:~$ sudo dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror
  11. 629694177+0 enregistrements lus
  12. 629694177+0 enregistrements écrits
  13. 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