Come ottenere un UUID del filesystem dato un percorso?


9

Mi viene consegnato il percorso di una directory o di un file.

Quale script di utilità / shell mi darà in modo affidabile l'UUID del file system su cui si trova questa directory / file?

Per UUID del file system intendo la UUID=...voce come mostrato ad esblkid

Sto usando Redhat Linux.

(qualcuno mi ha suggerito di chiedere questo qui su unix.stackexchange.com, quindi l'ho spostato dallo stackexchange.com originale)


3
Vedi unix.stackexchange.com/questions/11311/… su come ottenere il filesystem, dopo di che puoi eseguire blkid.
Muru,

Si noti che non tutti i file system avranno un UUID; blkid non ti darà un UUID ad es. per i montaggi NFS.
Oliver,

Risposte:


8

Un'opzione è stat+ findmntcombo:

findmnt -n -o UUID $(stat -c '%m' "$path")

Qui -ndisabilita l'intestazione e -o UUIDstampa solo il valore UUID. L'opzione -c '%m'di statè presente per produrre solo mountpoint di un determinato percorso.


2
Non è necessario stat:findmnt -no uuid -T "$path"
don_crissti,

3

È possibile utilizzare df per trovare il punto di montaggio del file e quindi applicare il risultato a blkid sull'UUID. È necessario eseguire (almeno) blkid come root affinché funzioni:

FILE_OR_DIR="$PWD"
blkid -s UUID -o value $( df "$FILE_OR_DIR" )

Meglio sarebbe -o export, dal momento che stampa l'output del modulo UUID=....
Muru,

@muru non mi era chiaro se fosse richiesto solo l'UUID ( -o value) o UUID="value"un'espressione di tipo ( -o export). Ho scelto il valore.
roaima,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.