क्या POSIX शेल में C का सहारा लिए बिना सभी btrfs filesystems सबवॉल्म्स पर जानकारी प्राप्त करने का एक सुविधाजनक तरीका है ?
/sys/fs/btrfs
इसमें केवल फाइलसिस्टम पर जानकारी होती है, सबवोल्यूम पर कुछ भी नहीं होता है, इसलिए वर्तमान में मैं सभी फाइल सिस्टम को एक अस्थायी फ़ोल्डर में माउंट कर रहा हूं, उन्हें स्कैन कर रहा हूं btrfs subvol list
, फिर परिणामी आउटपुट को पार्स कर रहा हूं । कहने की जरूरत नहीं है, कि काफी बदसूरत है।
यह 3.16.x कर्नेल और btrfs-progs v3.14.1 (स्टॉक उबंटू 14.10 से) के साथ है।
नीचे (बदसूरत) स्क्रिप्ट है जो मैं वर्तमान में उपयोग कर रहा हूं। मुझे पता है कि मुझे वह जानकारी मिल सकती है जिसकी मुझे शुद्ध सी का उपयोग करने की आवश्यकता है, और शायद यही वह है जिसे मैं समाप्त करूंगा, लेकिन मैं सोच रहा था कि क्या कोई सरल, अधिक सुरुचिपूर्ण तरीका था।
#!/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