Estou tentando criar um script bash que criará uma nova partição com um sistema de arquivos em um disco com as partições existentes.
Parece fácil criar partições programaticamente com o parted, no entanto, é necessário saber por onde iniciar e parar a nova partição, e é aqui que estou tendo problemas.
Eu não quero confiar no disco que possui partições em determinada posição / tamanho. Ou seja, quero criar uma nova partição iniciando imediatamente após a última existente. Quero poder criar a partição de tamanho fixo ou preencher o espaço restante.
No Bash, existe uma maneira confiável de determinar
a) a posição final da última partição
eb) o espaço não particionado restante após a última partição?
Respostas:
parted
pode imprimir espaço livre. Exemplo (eu escolhi um complicado de propósito):Como você pode ver, isso fornece diretamente a posição e o tamanho da partição que você pode criar, ou seja, a última linha que diz
Free Space
. Você pode criar uma partição que começa em 31115264s e termina em 31116287s.Se não fosse pela armadilha que a partição estendida não é grande o suficiente!
Mas talvez você já use o GPT onde não sofre dessas complicações.
Agarrar os números deve ser fácil.
Ou algo parecido. (Naturalmente, você gostaria de fazer mais verificações de sanidade aqui.)
@swisscheese fez um bom comentário na outra resposta, eu não sabia que
parted
oferecia uma saída amigável à análise. Você pode optar por usá-lo. Exemplo para obter o último maior grátis:Se isso é aplicável à sua situação (no meu exemplo, você também não pode criar uma partição, ela já está cheia), é algo que você precisa descobrir por si mesmo. :)
fonte
parted -m $disk unit s print free | grep "free;" | tail -n 1 | awk -F':' '{print $2 " " $3}'
É fácil,
mkparted
tem uma--list
opção, você precisa usarawk
e--list
recuperar a última partição e, em seguidamkpart part-type [fs-type] start end
, usar ,Mas sua resposta:
No começo, você deve obter todas as partições e com:
Notas:
GB
paraMG
.variable
-s
no seuparted command
script final.Se eu tiver tempo, conclua este script, desculpe por não ter tempo.
fonte