아래와 같이 btrfs 하위 볼륨 트리를 만드는 방법이 있습니까? (하위 볼륨만 해당 - 일반 디렉터리나 파일은 제외됩니다.)
# tree /mnt/1
/mnt/1
├── a
├── snapshot
│ ├── a
│ └── subv
└── subv
└── b
이 예제는 일반 디렉터리나 파일 없이 "샘플" btrfs에서 생성되었습니다.
tree <mountpoint>
하위 볼륨뿐만 아니라 모든 디렉터리와 파일을 표시합니다. 이 옵션을 사용하면 -d
디렉터리만 표시됩니다. 이 방법이 더 좋지만 하위 볼륨이 아닌 디렉터리도 계속 표시합니다.
따라서 설치된 시스템에서는 다음을 얻을 수 있습니다.
# tree /
/
├── bin -> usr/bin
├── boot
│ ├── grub
│ │ ├── fonts
│ │ │ └── unicode.pf2
│ │ ├── grub.cfg
│ │ ├── grub.cfg.example
│ │ ├── grubenv
│ │ ├── i386-pc
│ │ │ ├── 915resolution.mod
│ │ │ ├── acpi.mod
│ │ │ ├── adler32.mod
│ │ │ ├── affs.mod
... <over 242,000 lines snipped>
답변1
이 솔루션을 참조하세요. 명령에서 하위 볼륨 목록을 가져와 btrfs
경로 열만 제거한 다음 2개의 도구를 통해 전달합니다. 첫 번째 도구는 경로 목록을 계층적으로 들여쓰기된 텍스트로 변환하고, 두 번째 도구는 들여쓰기된 위치에 ASCII 아트 트리를 추가합니다.
btrfs subvol list / | cut -f9 -d' ' | sed -e 's/^/ROOT\//' | paths2indent | indent2tree
여기에서 2개의 Perl 스크립트를 찾을 수 있습니다.경로 2 들여쓰기그리고들여쓰기 2 트리
하위 볼륨 목록의 예:
ID 1883 top level 5 path slash
ID 2004 top level 5 path logs
ID 2005 top level 5 path dbase
ID 2006 top level 5 path sdata
ID 2007 top level 5 path users
ID 2937 top level 5 path slash/snaps/by-procedure/quota-yazzy/users
ID 2938 top level 5 path slash/snaps/by-date/2019-11-21_0100/dbase
ID 2939 top level 5 path slash/snaps/by-date/2019-11-21_0100/slash
ID 2940 top level 5 path slash/snaps/by-date/2019-11-21_0100/logs
ID 2941 top level 5 path slash/snaps/by-date/2019-11-21_0100/sdata
ID 3004 top level 5 path slash/snaps/home/2019-12-04_0600
출력 예:
ROOT
├── dbase
├── slash
│ └── snaps
│ ├── by-procedure
│ │ └── quota
│ │ └── users
│ ├── by-date
│ │ └── 2019-11-21_0100
│ │ ├── dbase
│ │ ├── slash
│ │ ├── sdata
│ │ └── logs
│ └── home
│ └── 2019-12-04_0600
├── users
├── sdata
└── logs
편집하다: 최신 버전에서는 출력 형식이 다르므로 필요한 경우 cut
필드 번호( -f7
AND )를 변경하세요.-f9