Como obter o nome do dispositivo de partição e o ponto de montagem quando o sistema de arquivos
rótulo é conhecido?
Existem várias possibilidades:
Linux
Rótulo do sistema de arquivos para o nome do dispositivo
O nome do dispositivo pode ser obtido com blkid
:
blkid -l -o device -t LABEL="$label" -c /dev/null
Nome do dispositivo para o ponto de montagem
Eu tentei obter o ponto de montagem com blkid
, mas falhei. Usando o -s
alternar todos os outros campos pode ser consultado quando o rótulo é fornecido:
blkid -l -t LABEL="$label" -o value -s LABEL # yields label
blkid -l -t LABEL="$label" -o value -s TYPE # yields partition type
blkid -l -t LABEL="$label" -o value -s UUID # yields UUID
blkid -l -t LABEL="$label" -o value -s MOUNTPOINT # yields nothing
A obtenção do ponto de montagem não é suportada aparentemente, embora esteja listado
quando a opção -o list
é fornecida, mas não de maneira fácil e fácil de usar:
blkid -o list -c /dev/null <device>
A próxima tentativa foi usar df -P
. Aqui está o que eu inventei, assumindo o
dispositivo é armazenado na variável device
:
export device
mountpoint=$(df -P |
awk --assign dev="$device" \
'{if ($1==dev) \
{for (i=1; i<=NF-5; i++) \
$i=$(i+5); \
NF-=5; \
print \
} \
}')
Este código funciona. No entanto, dada a sua fealdade eu não estou convencido de que a análise
df
é o caminho preferido.
Outros Unices
Rótulo do sistema de arquivos para o nome do dispositivo
blkid
funciona perfeitamente no Linux, mas não está disponível no Solaris ou
FreeBSD (pelo menos um não pode esperar que seja instalado). O mesmo vale para
findfs
.
Como faço para obter o nome do dispositivo de maneira portátil no Linux, Solaris e
FreeBSD?
Nome do dispositivo para o ponto de montagem
Felizmente, df -P
produz resultados muito semelhantes em todos os sistemas testados. o
O problema é que o meu feio awk
script não parece ser portátil (testado com
Sol awk
, gawk
no Solaris e FreeBSDs awk
). Qual é o caminho preferido?
Perguntas relacionadas
Como obter o ponto de montagem do flash drive usando o uuid?
Problema: A análise de /proc/mounts
não é portável e problemática mesmo no Linux.
Parsing mount
parece ainda pior. Perl geralmente não está disponível.
Existe um comando para ver onde um disco é montado?
Problema: Analisa /proc/mounts
com um script awk
com bugs. As soluções não são portáteis.
Resumo
Gostaria de obter o nome do dispositivo e o ponto de montagem quando o rótulo do sistema de arquivos
é fornecido de maneira portátil (assumindo um shell POSIX). O rótulo do disco pode
contém espaços em branco ou outros caracteres não-ASCII que parecem complicar
as coisas ainda mais.
Label-To-Device Device-To-Mount-Point
--------------- ---------------------
Linux ✓ ✓ (ugly)
Solaris . .
FreeBSD . .