Є зручний спосіб отримати інформацію про всі Btrfs файлових систем , подоб'емах , не вдаючись до C, тобто в POSIX оболонці ?
/sys/fs/btrfs
містить інформацію лише про файлові системи, нічого про підпункти, тому зараз я закінчую встановлення всіх файлових систем у темп-папці, скануючи їх btrfs subvol list
, а потім аналізую отриманий результат. Потрібно говорити, що це досить некрасиво.
Це з ядром 3.16.x та btrfs-progs v3.14.1 (зі складу Ubuntu 14.10).
Нижче наведено (потворний) сценарій, який я зараз використовую. Я знаю, що міг би отримати інформацію, що мені потрібна, використовуючи чистий C, і, мабуть, це я в кінцевому підсумку робитиму, але мені було цікаво, чи існує простіший, елегантніший спосіб.
#!/bin/bash
for i in /sys/fs/btrfs/*[!features]; do
device="/dev/$(basename $i/devices/*)"
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