Перечислите все btrfs файловые системы и подобъемы в оболочке

Вы когда-либо думали о предоставлении экрана GNU попытки? Чтобы быть очень честным, у меня нет большого опыта с tmux, но экран всегда делал задание приятно.

10
26.01.2018, 19:45
1 ответ

/sys/fs/btrfs не перечисляет все файловые системы btrfs (, например, не смонтированную ), протестировано на Debian / Ubuntu (4.14.0 -1 / 4.10.0 -42 ).
Я бы использовал проги btrfs для их поиска:

btrfs filesystem show | awk '/ path /{print $NF}'

А так как проги btrfs могут перечислять подтомы только смонтированных файловых систем, ваш скрипт недалек от того, что я бы использовал:

#!/bin/bash

readarray -t btdev < <(sudo btrfs filesystem show | awk '/ path /{print $NF}' )

for i in "${btdev[@]}"; do 

  device="${i}"
  mountpoint=/var/lib/btrfs/tmp/mnt/$(basename "$i")

  [ -d "$mountpoint" ] || mkdir "$mountpoint"

  grep -qs $mountpoint /proc/mounts
  [ $? -ne 0 ] && mount -v "$device" "$mountpoint"

  while read -r subvol; do
    # whatever you want
  done < <(btrfs subvolume list "$mountpoint")

  umount $mountpoint
  rmdir $mountpoint
done

Не тестировалось на нескольких -файловых системах устройств (raid -0/1/10/5/6)

4
27.01.2020, 20:03

Теги

Похожие вопросы