Gibt es eine bequeme Möglichkeit, Informationen zu allen Subvolumes von btrfs- Dateisystemen abzurufen, ohne auf C zurückzugreifen, dh in der POSIX-Shell ?
/sys/fs/btrfsEnthält nur Informationen zu Dateisystemen, nichts zu Subvolumes. Daher mounte ich derzeit alle Dateisysteme in einem temporären Ordner, scanne sie mit btrfs subvol listund analysiere dann die resultierende Ausgabe. Das ist natürlich ziemlich hässlich.
Dies ist mit einem 3.16.x Kernel und btrfs-progs v3.14.1 (ab Lager Ubuntu 14.10).
Unten ist das (hässliche) Skript, das ich gerade benutze. Ich weiß, dass ich die Informationen, die ich brauche, mit reinem C erhalten könnte, und das werde ich wahrscheinlich am Ende tun, aber ich habe mich gefragt, ob es einen einfacheren und eleganteren Weg gibt.
#!/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