1
列出shell中的所有btrfs文件系统和子卷
是否有一种便捷的方法来获取所有btrfs文件系统子卷上的信息而无需使用C,即在POSIX shell中? /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 …