Question Comment diviser une image de lecteur créée avec «dd» en fichiers séparés pour chaque partition?


J'ai créé l'image d'un disque défaillant avec:

dd if=/dev/sde of=/mnt/image001.dd

Le lecteur n'avait que deux partitions:

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      102400    7  HPFS/NTFS
/dev/sde2              13       60802   488282112    7  HPFS/NTFS

Comment puis-je diviser l'image (image001.dd) en deux ou trois fichiers (1: MBR; 2: Partition 1; 3: Partition 2) afin que je puisse y monter les systèmes de fichiers?

Une solution que j'ai trouvée qui ne fonctionnerait pas pour moi est d'utiliser split pour créer beaucoup de fichiers 512K, puis cat les reconstituer ensemble en trois fichiers (1: 512K, 2: 105M, 3: le reste), mais je n’ai pas assez d’espace disque pour cela.

L'histoire:
J'ai déjà copié l'intégralité de l'image sur un nouveau lecteur, qui démarre et fonctionne généralement. Il semble que le FS ait été corrompu sur l’ancien disque défaillant, et dd copié les parties corrompues (comme il se doit) et je les ai écrites sur le nouveau lecteur. Ma solution est de monter le FS que j'ai copié et de copier uniquement les fichiers (en utilisant rsync ou quelque chose) pour que avec espoir Je ne vais pas copier les mauvais morceaux.

MISE À JOUR 1: J'ai essayé dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1 mais mount se plaint que NTFS signature is missing, donc je pense que je ne l'ai pas fait correctement.


9
2018-02-25 19:11


origine




Réponses:


Vous n'avez pas besoin de diviser cela du tout.

Utilisation parted pour obtenir des détails sur la table de partition:

parted image001.dd

Dans parted, passez en unités d'octets avec la commande u, puis B. Après cela, lancez la commande print.

Vous obtiendrez une sortie qui ressemble à ceci (la sortie provient d'un système réel, pas d'une image):

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type     File system     Flags
 2      1048576B      400556031B    399507456B    primary  ext4            boot
 3      400556032B    21165506559B  20764950528B  primary  ext4
 1      21165506560B  25164775423B  3999268864B   primary  linux-swap(v1)

Vous pouvez utiliser le Start nombre en tant que décalage pour un montage en boucle:

mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue

monterait la troisième partition à /mnt/rescue.


16
2018-02-25 19:43



À la fois cela et kpartx résoudre mon problème. J'ai choisi cette réponse parce que j'imagine que parted est plus commun que kpartx, toutefois kpartx est un peu plus facile. - Joe A


C'est beaucoup mieux d'utiliser simplement kpartx outil.

usage : kpartx [-a|-d|-l] [-v] wholedisk
    -a add partition devmappings
    -d del partition devmappings
    -l list partitions devmappings that would be added by -a
    ...

Exemple:

# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk 
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

À ce stade, je peux monter /dev/mapper/loop0p2.

Après démontage appel kpartx -d whole_disk nettoyer.


16
2018-02-25 19:59



+1 C'est bien, je n'ai jamais entendu parler de cet outil. - Sven♦
La réponse ci-dessous de SvenW fonctionne très bien! Les deux me permettent de monter une partition dans l'image du lecteur. - Joe A