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/btrfs
Enthält nur Informationen zu Dateisystemen, nichts zu Subvolumes. Daher mounte ich derzeit alle Dateisysteme in einem temporären Ordner, scanne sie mit btrfs subvol list
und 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