POSIX 쉘 에서 C를 사용하지 않고 모든 btrfs 파일 시스템 하위 볼륨 에 대한 정보를 얻는 편리한 방법이 있습니까?
/sys/fs/btrfs는 파일 시스템에만 정보를 포함하고 하위 볼륨에는 아무것도 포함하지 않으므로 현재 모든 파일 시스템을 임시 폴더에 마운트하고로 스캔 btrfs subvol list한 다음 결과 출력을 구문 분석합니다. 말할 것도없이, 그것은 상당히 추악합니다.
이것은 3.16.x 커널과 btrfs-progs v3.14.1 (재고 우분투 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
이것을 위해 C 프로그램을 작성 했습니까? 기꺼이 공유하고 싶다면 다른 사람들이 유용하다고 생각합니다.
—
etskinner