Ich versuche, ein Bash-Skript zu erstellen, das eine neue Partition mit einem Dateisystem auf einer Festplatte mit vorhandenen Partitionen erstellt.
Es sieht so aus, als ob es einfach ist, Partitionen programmgesteuert mit parted zu erstellen. Sie müssen jedoch wissen, wo die neue Partition gestartet und gestoppt werden soll, und hier habe ich Probleme.
Ich möchte mich nicht darauf verlassen, dass die Festplatte Partitionen in einer bestimmten Position / Größe hat. Das heißt, ich möchte eine neue Partition erstellen, die unmittelbar nach der letzten vorhandenen beginnt. Ich möchte dann in der Lage sein, die Partition entweder mit einer festen Größe zu erstellen oder den verbleibenden Speicherplatz zu füllen.
Gibt es in Bash eine zuverlässige Methode zur Bestimmung?
a) die Endposition der letzten Partition und
b) der verbleibende nicht partitionierte Speicherplatz nach der letzten Partition?
Antworten:
parted
kann freien Speicherplatz drucken. Beispiel (Ich habe absichtlich ein kompliziertes ausgewählt):Wie Sie sehen, erhalten Sie direkt die Position und Größe der Partition, die Sie möglicherweise erstellen können, dh die allerletzte Zeile, in der steht
Free Space
. Sie können eine Partition erstellen, die bei 31115264 beginnt und bei 31116287 endet.Ohne die Gefahr wäre die erweiterte Partition nicht groß genug!
Aber vielleicht verwenden Sie bereits GPT, wenn Sie nicht an solchen Komplikationen leiden.
Das Auffinden der Zahlen sollte einfach genug sein.
Oder etwas ähnliches. (Natürlich möchten Sie hier noch einige Gesundheitsprüfungen durchführen.)
@swisscheese machte einen guten Kommentar in der anderen Antwort, ich wusste nicht,
parted
angeboten parse freundliche Ausgabe. Sie können sich stattdessen dafür entscheiden. Beispiel für das Ergreifen des letzten größten freien:Ob dies für Ihre Situation zutrifft (in meinem Beispiel konnten Sie dort auch keine Partition erstellen, sie ist bereits voll), müssen Sie selbst herausfinden. :) :)
quelle
parted -m $disk unit s print free | grep "free;" | tail -n 1 | awk -F':' '{print $2 " " $3}'
Es ist einfach,
mkparted
eine hat--list
Option, müssen Sie verwendenawk
und--list
die letzte Partition abzurufen , und dann verwendenmkpart part-type [fs-type] start end
,Aber deine Antwort:
Zuerst sollten Sie alle Partitionen erhalten und mit:
Anmerkungen:
GB
zuMG
.variable
-s
in Ihremparted command
endgültigen Skript verwenden.Wenn ich Zeit habe, vervollständige dieses Skript. Entschuldigung, ich habe keine Zeit.
quelle