Formation PUB100 : Travailler avec un Mac, 2020 Opérations diverses

11.15 Copie intégrale d'un disque avec la commande dd


La commade dd permet d'effectuer une copie intégrale d'un disque vers un autre. Le disque copié peut être le disque interne de l'ordinateur, un disque externe, une carte SD ou micro SD, etc.

La signification des lettres dd n'est pas claire. Selon différentes sources, ellle peut signifier Data Duplicator, Disk Dump, Dump Data ou encore Copy and Convert - mais la commande cc était déjà prise alors la version dd a été retenue.

La commande dd sous Mac est très semblable à la version Linux. Elle comporte cependant quelques différences dont vous devrez être au fait si vous travaillez dans les deux environnements. Je vais vous les souligner au fur et à mesure de mes explications.

Note : si vous n'êtes pas fervents du travail à la ligne de commande, il est possible d'effectuer le même travail à partir de l'Utilitaire de disque. Des explications détaillées vous sont fournies ici : https://support.apple.com/fr-ca/guide/disk-utility/dskutl11888/19.0/mac/10.15.

Dans la démonstration qui suit, je vais utiliser des commandes dans le Terminal pour copier la carte micro SD de mon Raspberry Pi sur le disque dur de mon MacBook Pro.

La copie créera un fichier avec l'extension .img. Ce fichier contiendra une copie intégrale de la carte, incluant toutes ses partitions.

  • La première étape consiste à retrouver le point de montage du disque à copier. Avant d'insérer la carte dans le lecteur de carte de l'ordinateur, ouvrez une fenêtre Terminal et entrez la commande diskutil list
  • Insérez maintenant la carte Micro SD puis entrez à nouveau la commande diskutil list. Les lignes ajoutées correspondent à la carte Micro SD. Sur mon ordinateur, j'obtiens ceci : 
    Résultat à l'écran

    /dev/disk2 (external, physical):
    #: TYPE                    NAME      SIZE        IDENTIFIER
    0: FDisk_partition_scheme            *15.5 GB    disk2
    1: Windows_FAT_16          RECOVERY   2.6 GB     disk2s1
    2: Linux                              33.6 MB    disk2s5
    3: Windows_FAT_32          boot       268.4 MB   disk2s6
    4: Linux                              12.6 GB    disk2s7

    Le point de montage est donc /dev/disk2.
  • Si vous travaillez sous Linux, vous devrez plutôt utiliser la commande df. Cette commande fonctionne également sous Mac. Sur mon MacBook Pro, j'obtiens ceci :
    Résultat à l'écran

    /dev/disk2s1 5029504 4846592 182912 97% 0 0 100% /Volumes/RECOVERY
    /dev/disk2s6 516188 108923 407265 22% 0 0 100% /Volumes/boot

    Ces entrées correspondent aux deux partitions de ma carte (s1 et s6). Le point de montage est la partie commune entre les deux, c'est-à-dire /dev/disk2.

  • Entrez maintenant la commande dd comme suit.

    Remarquez que j'ai ajouté un r dans le point de montage (/dev/rdisk2) afin de travailler en mode disque brut (raw disk). Ceci augmente considérablement la vitesse de traitement.

    Ajustez le point de montage puis le nom du fichier vers lequel vous désirez copier le disque. Il est intéressant - mais non obligatoire - de terminer le nom du fichier par la date du jour au format aaaa-mm-jj.

    Terminal

    sudo dd bs=32m if=/dev/rdisk2 of=copiedisque-aaaa-mm-jj.img

    Note : sous Linux, la taille des blocs (attribut bs) doit prendre un M majuscule. De plus, il n'est pas possible de travailler avec un disque brut alors il ne faut pas mettre de r dans le point de montage.

    Cette opération peut prendre de longues minutes. À titre d'exemple, ma carte de 16 Go a été copiée en 4 minutes. Si je fais le même exercice sans utiliser le disque brut (pas de r dans le point de montage), la même opération prend 33 minutes.

    Pendant que la copie est en cours, vous pouvez appuyer sur Ctrl + t (Mac ou Linux) à tout moment pour voir le degré d'avancement.

  • Le fichier sera créé dans le dossier courant. Vous pouvez utiliser la commande pwd (Print Working Directory) pour connaître son chemin exact.

Récupérer le contenu du disque à partir de l'image

Il n'est pas très utile de créer une image d'un disque si on ne peut pas la remettre en place au besoin ! Voici donc comment réinitialiser un disque à partir de la précieuse image.

Vous devrez d'abord « démonter » le disque à l'aide de la commande : 

slug_de_la_fiche (fiche inexistante)Terminal

diskutil unmountDisk /dev/disk2

 Utilisez ensuite la commande dd inverse de cellle qui a créé l'image, c'est-à-dire que l'entrée if (input file) devriendra of (output file) et vice-versa.

Terminal

sudo dd bs=32m if=copiedisque-aaaa-mm-jj.img of=/dev/rdisk2

Si le fichier .img n'est pas placé dans le dossier courant, vous devrez spécifier son chemin. Sous Mac, vous pouvez le copier facilement avec cette technique : Copier le chemin d'un fichier.

Finalement, il faut éjecter le disque de façon sécuritaire.

Terminal

diskutil eject /dev/disk2

Note : avec la commande diskutil unmountDisk, le disque ne peut pas être utilisé pour les opérations courantes comme la lecture ou l'écriture mais il demeure « disponible » pour le système d'exploitation pour effectuer certaines opérations, par exemple utiliser la commande dd. Avec la commande diskutil eject, le disque n'est plus visible pour le système d'exploitation. Il est donc possible de le retirer en toute sécurité.

Vous pouvez également utiliser l'Utilitaire de disque de macOS pour remettre une image en place sur le disque de votre choix. Son utilisation est assez intuitive et bien expliquée ici : https://support.apple.com/fr-ca/guide/disk-utility/dskutl14078/mac

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre