vous vous retrouvez avec une liste de partitions désorganisée où la partition n°1 est en fin de liste et la n°12 au début.
Les commandes expert de fdisk permettent de réorganiser les tables msdos, mais elles ne traitent pas les tables GPT.
En 2 coups de sed et de parted, le script reorg_gpt.sh va s'en occuper.
Le postulat de départ est simple:
Tant que l'on ne déplace pas le 1er secteur d'une partition et que l'on ne diminue pas sa taille,
on peut supprimer et recréer une partition en conservant le système de fichiers qu'elle contient intact.
Précaution à prendre:
Si le volume que vous réorganisez contient votre chargeur de démarrage, prévoyez une solution de secours pour rebooter.
Je n'en ai jamais eu besoin, mais ....
reorg_gpt.sh
Code : Tout sélectionner
#!/bin/sh
# génère le script de réorganisation des partitions
# à exécuter en super utilisateur
# paramètre: le volume à réorganiser sdx avec le x adéquat.
target="/dev/$1"
cmd1="parted \/dev\/$1 rm"
cmd2="parted -s \/dev\/$1 mkpart primary"
fname='run_reorg.sh'
echo -e '#!/bin/sh\n# script de réorganisation des partitions\n# à exécuter en super utilisateur\n' > $fname
echo -e "echo \"on y va ??\"\nread\n" >> $fname
chmod +x $fname
parted $target unit s print|sed 's/^ //;/^[1-9]/!d;s/\([0-9]\{1,2\} \).*/'"$cmd1"' \1/' >> $fname
echo -e "\necho 'les partitions sont enlevées, on les recrée'\n" >> $fname
parted $target unit s print|sed 's/^ //;/^[1-9]/!d;s/\([0-9]\{1,2\} *\)\([0-9]*s *[0-9]*s \).*/'"$cmd2"' \2/' >> $fname
echo -e "\nparted $target set 1 bios_grub on" >> $fname
Code : Tout sélectionner
#!/bin/sh
# script de réorganisation des partitions
# à exécuter en super utilisateur
echo "on y va ??"
read
parted /dev/sdb rm 1
parted /dev/sdb rm 2
parted /dev/sdb rm 8
parted /dev/sdb rm 3
parted /dev/sdb rm 9
parted /dev/sdb rm 5
parted /dev/sdb rm 6
parted /dev/sdb rm 7
parted /dev/sdb rm 11
parted /dev/sdb rm 4
echo 'les partitions sont enlevées, on les recrée'
parted -s /dev/sdb mkpart primary 34s 16064s
parted -s /dev/sdb mkpart primary 16065s 96390000s
parted -s /dev/sdb mkpart primary 120503565s 128536064s
parted -s /dev/sdb mkpart primary 128536065s 289170000s
parted -s /dev/sdb mkpart primary 401625001s 481966064s
parted -s /dev/sdb mkpart primary 481966065s 803250000s
parted -s /dev/sdb mkpart primary 803250001s 1124550000s
parted -s /dev/sdb mkpart primary 1269151065s 1278774000s
parted -s /dev/sdb mkpart primary 1293234176s 1317330943s
parted -s /dev/sdb mkpart primary 1317330944s 1953525134s
parted /dev/sdb set 1 bios_grub on