A partir do nome do arquivo, é possível obter nomes de pontos de montagem, dispositivos, LV, VG, PV

4

Dado um nome de caminho relativo, como obtenho o seu:

  • Ponto de montagem
  • Dispositivo
  • nome do LVM LV
  • nome do LVM VG
  • Nome (s) do PV do LVM
por Tom Hale 17.09.2017 / 12:06

1 resposta

4

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")
    
por 17.09.2017 / 12:06