J'essaie de créer un script bash qui créera une nouvelle partition avec un système de fichiers sur un disque avec des partitions existantes.
Il semble qu'il soit facile de créer des partitions par programme avec parted, mais cela vous oblige à savoir par où commencer et arrêter la nouvelle partition, et c'est là que j'ai des problèmes.
Je ne veux pas compter sur le disque ayant des partitions dans une position / taille particulière. Autrement dit, je veux créer une nouvelle partition commençant immédiatement après la dernière partition existante. Je veux pouvoir ensuite créer la partition d'une taille fixe ou remplir l'espace restant.
Dans Bash, existe-t-il un moyen fiable de déterminer
a) la position finale de la dernière partition, et
b) l'espace non partitionné restant après la dernière partition?
Réponses:
parted
peut imprimer de l'espace libre. Exemple (j'en ai choisi un compliqué exprès):Comme vous pouvez le voir, cela vous donne directement la position et la taille de la partition que vous pouvez créer, c'est-à-dire la toute dernière ligne qui dit
Free Space
. Vous pouvez créer une partition qui commence à 31115264s et se termine à 31116287s.Sans le piège, la partition étendue n'est pas assez grande!
Mais peut-être que vous utilisez déjà le GPT où vous ne souffrez pas de telles complications.
Saisir les chiffres devrait être assez facile.
Ou quelque chose de similaire. (Naturellement, vous voudriez faire d'autres vérifications de santé mentale ici.)
@swisscheese a fait un bon commentaire dans l'autre réponse, je ne savais pas qu'il
parted
offrait une sortie conviviale pour l'analyse. Vous pouvez choisir de l'utiliser à la place. Exemple pour saisir le dernier plus grand gratuit:Que ce soit applicable à votre situation (dans mon exemple, vous ne pouvez pas créer une partition là-bas non plus, elle est déjà vraiment pleine) est quelque chose que vous devez déterminer par vous-même. :)
la source
parted -m $disk unit s print free | grep "free;" | tail -n 1 | awk -F':' '{print $2 " " $3}'
C'est facile,
mkparted
a une--list
option, vous devez utiliserawk
et--list
récupérer la dernière partition, puis utilisermkpart part-type [fs-type] start end
,Mais votre réponse:
Au début, vous devriez obtenir toutes les partitions et avec:
Remarques:
GB
enMG
.variable
-s
dans votreparted command
script final.Si j'ai le temps, complétez ce script désolé car je n'ai pas le temps.
la source