Estoy intentando crear un script bash que creará una nueva partición con un sistema de archivos en un disco con particiones existentes.
Parece que es fácil crear particiones programáticamente con parted, sin embargo, requiere que sepa dónde comenzar y detener la nueva partición, y aquí es donde tengo problemas.
No quiero confiar en que el disco tenga particiones en una posición / tamaño particular. Es decir, quiero crear una nueva partición comenzando inmediatamente después de la última existente. Quiero poder crear la partición de un tamaño fijo o llenar el espacio restante.
En Bash, ¿hay una forma confiable de determinar
a) la posición final de la última partición, y
b) el espacio no particionado restante después de la última partición?
Respuestas:
parted
Puede imprimir espacio libre. Ejemplo (elegí uno complicado a propósito):Como puede ver, esto le proporciona directamente la posición y el tamaño de la partición que puede crear, es decir, la última línea que dice
Free Space
. Puede crear una partición que comience en 31115264s y termine en 31116287s.¡Si no fuera por la trampa, la partición extendida no es lo suficientemente grande!
Pero tal vez ya usa GPT donde no sufre tales complicaciones.
Agarrar los números debería ser bastante fácil.
O algo similar. (Naturalmente, querrás hacer más controles de cordura aquí).
@swisscheese hizo un buen comentario en la otra respuesta, no sabía que
parted
ofrecía resultados amigables para analizar. Puede optar por usar eso en su lugar. Ejemplo para agarrar el último libre más grande:Si eso es aplicable a su situación (en mi ejemplo, tampoco podría crear una partición allí, ya está llena) es algo que debe descubrir por sí mismo. :)
fuente
parted -m $disk unit s print free | grep "free;" | tail -n 1 | awk -F':' '{print $2 " " $3}'
Es fácil,
mkparted
tiene una--list
opción, necesita usarawk
y--list
recuperar la última partición y luego usarmkpart part-type [fs-type] start end
,Pero tu respuesta:
Al principio debes obtener todas las particiones y con:
Notas:
GB
aMG
.variable
-s
en suparted command
script final.Si tengo tiempo, complete este script, perdón por no tener tiempo.
fuente