Apakah ada cara mudah untuk mendapatkan informasi tentang semua subvolume sistem file btrfs tanpa menggunakan C, yaitu dalam shell POSIX ?
/sys/fs/btrfs
hanya berisi info tentang filesystem, tidak ada pada subvolume, jadi saat ini saya akhirnya memasang semua filesystem di folder temp, memindai dengan btrfs subvol list
, lalu menguraikan output yang dihasilkan. Tak perlu dikatakan, itu cukup jelek.
Ini dengan kernel 3.16.x dan btrfs-progs v3.14.1 (dari stok Ubuntu 14.10).
Di bawah ini adalah skrip (jelek) yang saya gunakan saat ini. Saya tahu saya bisa mendapatkan info yang saya butuhkan menggunakan C murni, dan mungkin itulah yang akhirnya saya lakukan, tetapi saya bertanya-tanya apakah ada cara yang lebih sederhana, lebih elegan.
#!/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