J'ai une clé USB de 8 Go connectée à mon système qui ressemble à ceci:
[root@host]# fdisk -l /dev/sdb
Disk /dev/sdb: 8462 MB, 8462008320 bytes
255 heads, 63 sectors/track, 1028 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5c0894d9
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 9 72261 e W95 FAT16 (LBA)
/dev/sdb2 10 103 755055 83 Linux
[root@host]#
Donc, fondamentalement, ma partition FAT est d'environ 70 Mo, la partition ext2 est d'environ 740 Mo et le reste de l'espace (~ 7 Go) n'est pas alloué. Maintenant, lorsque j'ai créé mon disque dur USB via:
dd if=/dev/sdb of=myimage.img bs=1M
le fichier de sortie (myimage.img) fait environ 8 Go, ce qui est le fonctionnement normal de dd.
Question: Ce que je recherche, c'est un moyen de cloner directement mon disque dur USB sans l'espace non alloué afin que mon fichier de résultat soit d'environ 1 Go non compressé au lieu de 8 Go. La raison pour laquelle je pose la question est que le fichier de sortie (myimage.img) est utilisé par un programme de simulation pour démarrer l'image. Le simulateur peut gérer des fichiers de 8 Go mais je ne veux pas gaspiller mon espace disque.
Réponses:
Si je comprends bien, vous souhaitez créer une image du début du disque à la fin de la dernière partition.
Le paramètre pour
dd
cela fait celacount=
. Votre dernière partition se termine sur 103, et le compte devra être de 1 supplémentaire (104) et la taille de votre unité est de 8225280 octets (selon lafdisk -l
sortie). Vous pouvez donc simplement modifier votre commande de cette façon:Je suggérerais cependant que vous couriez à la
fdisk -u -l /dev/sdb
place. Les cylindres ne sont plus vraiment pertinents à cet âge, donc vous êtes mieux si vous voyez le nombre de secteurs pour éviter toute erreur d'arrondi. Ensuite, vous devrez exécuter:où count sera défini sur le nombre obtenu
fdisk -u -l
à la fin de la dernière partition plus un , au lieu de ce qui était auparavant 104. La taille de bloc par défautdd
est de 512 octets, qui est également l'unité quifdisk -u -l
sera utilisée dans la sortie.La table de partition de sauvegarde d'une partition GPT est stockée à la fin du disque, mais puisque vous n'utilisez pas GPT, tout ira bien.
la source
Il vous suffit de dire à dd de ne lire que la partie du disque qui vous intéresse. Le paramètre que vous recherchez est
count
.Prenez donc la taille de votre cylindre de 8 225 280 et multipliez le nombre de cylindres en utilisation par 103 et vous obtenez 847 203 840 octets. Étant donné que vous utilisez une taille de bloc d'un mégaoctet, convertissez ces octets en mégaoctets, soit 808.
Donc, votre commande est
dd if=... of=... bs=1M count=808
la source