Resumo
Dado um $pathname
relativo, os seguintes comandos definirão as seguintes variáveis:
$absolute $mount $dev $lv $vg $pvs
Nome do caminho absoluto
absolute=$(readlink -f "$pathname")
Ponto de montagem e dispositivo
read -r dev mount <<< $(df --portability "$pathname" | awk 'NR==2{print $1 " " $6}')
Nota: Os sistemas de arquivos btrfs e zfs podem abranger vários dispositivos, mas apenas um será listado aqui.
Nomes de LV e VG
read -r lv vg <<< $(sudo lvs -o lv_name,vg_name --noheadings "$dev")
Não há necessidade de se preocupar com possíveis espaços em branco em nomes como man lvm (8) diz:
The valid characters for VG and LV names are:
a-z A-Z 0-9 + _ . -
Dispositivos fotovoltaicos
pvs=$(sudo vgs -o pv_name --noheadings "$vg")
Pode haver mais de um PV hospedando seu VG.
Para lidar com o caso de borda de caracteres especiais em nomes de dispositivos, procure analisar pvs --reportformat json
.
Bônus: arquivo de backup do dispositivo de loop
backing=$(losetup -lnO BACK-FILE "$dev")