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