web-dev-qa-db-fra.com

restaurer à partir d'une image disque d'entrée avec dd, vers un espace non alloué ou une partition spécifique

J'ai déjà créé une image avec dd pour le disque d'entrée, l'image pour Windows 10, et je la restaure à partir du mode de récupération Ubuntu.

Lorsque je veux restaurer les fenêtres, j'efface le disque dur et supprime toutes les partitions.

wget -O- 'http://your_webhosting.com/Windows10template.img.gz' | gunzip | dd of=/dev/sda

La taille de l'image est de 5 Go compressée (format gz), 20 Go non compressée

J'ai eu trois partitions

 Device     Boot     Start        End    Sectors   Size Id Type
    /dev/sda1  *         2048    1026047    1024000   500M  7 HPFS/NTFS/exFAT
    /dev/sda2         1026048  208089944  207063897  98.8G  7 HPFS/NTFS/exFAT
    /dev/sda3       208089949 1953520064 1745430116 832.3G  f W95 Ext'd (LBA)
    /dev/sda5       208090012 1953520064 1745430053 832.3G  7 HPFS/NTFS/exFAT

Tout ce dont j'avais besoin était de restaurer l'image créée à partir du disque d'entrée sur sda1 et sda2 uniquement, et de conserver sda5 (mes propres fichiers)

J'ai retiré sda1 et sda2 et créé une nouvelle partition sda1 de 100 Go. J'ai restauré l'image avec

wget -O- 'http://your_webhosting.com/Windows10template.img.gz' | gunzip | dd of=/dev/sda1

mais rien n'a changé. Mes partitions sont maintenant comme ça

Device     Boot     Start        End    Sectors   Size Id Type
/dev/sda1            2048  195311615  195309568  93,1G 83 Linux
/dev/sda3       208089949 1953520064 1745430116 832,3G  f W95 Ext'd (LBA)
/dev/sda5       208090012 1953520064 1745430053 832,3G  7 HPFS/NTFS/exFAT

La méthode normale et de travail a complètement effacé le disque dur. J'ai besoin d'une méthode de travail pour le restaurer sur une seule partition ou sur un espace non alloué

/dev/sda1

Comment faire cela avec dd?

UPDATE

$ fdisk -l Windows10template.img
Disk Windows10template.img: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x266de740

Device                 Boot   Start      End  Sectors  Size Id Type
Windows10template.img1 *       2048  1026047  1024000  500M  7 HPFS/NTFS/exFAT
Windows10template.img2      1026048 41940991 40914944 19,5G  7 HPFS/NTFS/exFAT
3
ezak

Étant donné que les limites des partitions sur l'image de sauvegarde du lecteur sont alignées sur un sous-ensemble de celles de la structure de disque actuelle, il serait relativement simple de supprimer la partie pertinente de la sortie gunzip et de l'écrire dans les parties droites de /dev/sda avec dd, mais je ne vais pas écrire une réponse qui vous aidera uniquement à écraser les données de quelqu'un d'autre. Même pour vous-même, il existe un risque important de faire un calcul de décalage erroné ou de saisir un nombre incorrect pour le même résultat.

Au lieu de cela, il serait bien préférable de décompresser l'image du lecteur sur un support de stockage suffisamment grand et de l'utiliser. Vous pouvez le faire même en mode de récupération. Mais ce serait beaucoup plus facile si vous utilisiez une interface utilisateur graphique (par exemple, à partir d’un DVD/USB en direct), même si vous finissiez par le faire sur un terminal.

Je suppose qu'il y a au moins 25 Go (suffisamment pour contenir l'image de sauvegarde compressée et décompressée) sur le système de fichiers sur /dev/sda5.

  1. Montez le système de fichiers sur /dev/sda5.

    • Sur le terminal qui fonctionne avec:

      udisksctl mount --block-device /dev/sda5 --options rw
      

      udisksctl vous dira où le lecteur a été monté.

    • Sinon, vous pouvez utiliser le gestionnaire de fichiers ou les disques Gnome pour monter le système de fichiers.

    Je suppose que le point de montage est situé à /media/ubuntu/my-data. Ajustez les commandes suivantes en fonction du point de montage réel.

  2. Téléchargez l'image de lecteur compressée avec un navigateur Web ou votre client HTTP préféré sur le système de fichiers précédemment monté, e. g.:

    wget -P /media/ubuntu/my-data 'http://your_webhosting.com/Windows10template.img.gz'
    
  3. Décompressez l'image et stockez la sortie sur le même système de fichiers. Vous pouvez utiliser un gestionnaire d'archives comme File-Roller ou un outil de ligne de commande, e. g.:

    gunzip /media/ubuntu/my-data/Windows10template.img.gz
    
  4. Configurez un périphérique de boucle pour l’image de lecteur décompressée:

    Sudo losetup -f --show /media/ubuntu/my-data/Windows10template.img
    

    losetup vous montrera le chemin d'accès au périphérique de boucle. Je suppose que c'est /dev/loop7. Ajustez les commandes suivantes en fonction du chemin d'accès réel du périphérique.

  5. Demandez au noyau de détecter la table de partition à l'intérieur du périphérique en boucle (sauvegardé par l'image du lecteur):

    Sudo partprobe /dev/loop7
    

    Le noyau ajoutera des nœuds de périphériques de bloc supplémentaires pour les partitions détectées, i. e. /dev/loop7p1 et /dev/loop7p2.

  6. Copiez les partitions exposées précédemment individuellement sur le périphérique cible. Vous pouvez utiliser un gestionnaire de partition tel que Gnome Disks ou GParted ou dd. Pour ce dernier cela fera:

    Sudo dd if=/dev/loop7p1 of=/dev/sda1 bs=8M
    Sudo dd if=/dev/loop7p2 of=/dev/sda2 bs=8M
    

    Vérifiez que vous avez entré le bon chemin du périphérique cible et que le /dev/sda est ce que vous pensez en réalité! Ne comptez pas sur le noyau pour réaffecter le même nom à un périphérique en mode bloc dans l'ensemble du système redémarre!

    Vous pouvez vérifier l'identité de /dev/sda en consultant sa structure de partition (par exemple, avec fdisk /dev/sda ou Gnome Disks) ou d'utiliser les identificateurs de périphérique uniques et (principalement) stables dans /dev/disk/by-*.

  7. Vérifiez que /dev/sda1 et /dev/sda2 contiennent les données souhaitées.

  8. Vous avez terminé. Redémarrez dans Windows ou faites ce que vous voulez.

  9. Nettoyez l’image de lecteur restante quand et comme vous le souhaitez. Supprimez le périphérique de boucle correspondant (si vous n’avez pas redémarré entre-temps) ou ne le supprimez pas tant que vous ne l’avez pas fait:

    Sudo losetup -d /dev/loop7
    
2
David Foerster

dd est un outil très puissant mais aussi très dangereux. Veuillez sauvegarder tout ce qui est nouveau sur le lecteur cible (par exemple, dans la partition/dev/sda5) avant de commencer à manipuler dd.

Je pense que la méthode la moins dangereuse serait de

  1. clone 'tout' de l'image de sauvegarde sur un lecteur supplémentaire

  2. clonez la première partition du lecteur supplémentaire vers la première partition du lecteur cible.

  3. Mais vous avez endommagé la tête du lecteur (le premier mibioctet). Vous devez donc également cloner cette partie de l'image de sauvegarde sur le lecteur cible. Vous pouvez utiliser count=N pour copier uniquement N blocs. La taille de bloc par défaut est de 512 octets.

Une autre méthode plus rapide, mais plus risquée serait de cloner la première partie de la sauvegarde, de la tête de lecture jusqu'à la fin de la première partition.

4
sudodus