มีวิธีที่สะดวกที่จะได้รับข้อมูลเกี่ยวกับทุกbtrfs filesystems subvolumesโดยไม่ต้อง resorting C คือในPOSIX เปลือก ?
/sys/fs/btrfs
มีข้อมูลเกี่ยวกับระบบไฟล์เท่านั้นไม่มีอะไรในไดรฟ์ย่อยดังนั้นขณะนี้ฉันสิ้นสุดการติดตั้งระบบไฟล์ทั้งหมดในโฟลเดอร์ temp สแกนพวกเขาด้วย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