如何显示 btrfs 子卷树?

use*_*689 10 btrfs tree

有没有办法制作如下所示的 btrfs 子卷树?(只有子卷 - 没有常规目录或文件。)

# tree /mnt/1
/mnt/1
??? a
??? snapshot
?   ??? a
?   ??? subv
??? subv
    ??? b
Run Code Online (Sandbox Code Playgroud)

此示例是从没有常规目录或文件的“示例”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>
Run Code Online (Sandbox Code Playgroud)

ban*_*die 5

请参阅此解决方案。它从命令获取子卷列表btrfs,仅删除路径列,然后通过 2 个工具:第一个将路径列表转换为分层缩进文本,第二个在缩进位置添加 ascii 艺术树。

\n

btrfs subvol list / | cut -f9 -d\' \' | sed -e \'s/^/ROOT\\//\' | paths2indent | indent2tree

\n

您可以在这里找到这 2 个 perl 脚本:paths2indentindent2tree

\n

子卷列表示例:

\n
ID 1883 top level 5 path slash\nID 2004 top level 5 path logs\nID 2005 top level 5 path dbase\nID 2006 top level 5 path sdata\nID 2007 top level 5 path users\nID 2937 top level 5 path slash/snaps/by-procedure/quota-yazzy/users\nID 2938 top level 5 path slash/snaps/by-date/2019-11-21_0100/dbase\nID 2939 top level 5 path slash/snaps/by-date/2019-11-21_0100/slash\nID 2940 top level 5 path slash/snaps/by-date/2019-11-21_0100/logs\nID 2941 top level 5 path slash/snaps/by-date/2019-11-21_0100/sdata\nID 3004 top level 5 path slash/snaps/home/2019-12-04_0600\n
Run Code Online (Sandbox Code Playgroud)\n

输出示例:

\n
ROOT\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dbase\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 slash\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 snaps\n\xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 by-procedure\n\xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 quota\n\xe2\x94\x82       \xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 users\n\xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 by-date\n\xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 2019-11-21_0100\n\xe2\x94\x82       \xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dbase\n\xe2\x94\x82       \xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 slash\n\xe2\x94\x82       \xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sdata\n\xe2\x94\x82       \xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 logs\n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 home\n\xe2\x94\x82           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 2019-12-04_0600\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 users\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sdata\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 logs\n
Run Code Online (Sandbox Code Playgroud)\n

编辑:较新版本的输出格式有所不同,因此cut如果需要,请更改\的字段编号(-f7-f9)。

\n