如何删除具有多个 btrfs 子卷的目录?

Str*_*Bad 9 rm btrfs

我的根文件系统在 btrfs 分区上。我的/chroot目录中有许多 btrfs 子卷,这阻止我使用rm -rf /chroot. 为了删除所有子卷,我尝试/chroot使用仅列出下面的子卷-o,手册页说“仅打印指定路径下的子卷”。

# btrfs subvolume list -o /chroot
ID 593 gen 6616 top level 5 path chroot/base-devel/root
ID 594 gen 6618 top level 5 path chroot/multilib-devel/root
ID 595 gen 6620 top level 5 path chroot/base/root
ID 597 gen 6624 top level 5 path chroot/twm/root
ID 599 gen 6628 top level 5 path chroot/lxde/root
ID 601 gen 6655 top level 5 path chroot/wheezy/root
ID 602 gen 6684 top level 5 path chroot/sid/root
ID 603 gen 6862 top level 5 path var/lib/machines
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这会返回 /var/lib/macines 中的子卷(我不想删除)。这让我想到了 3 个问题:

  1. 什么是-o选择做什么?

  2. 我如何只列出下面的子卷 /chroot

  3. 如何删除子卷数量未知的目录?

我正在使用 4.2.5 内核和 btrfs-progs v4.3.1 运行 Arch Linux

小智 2

以下命令删除/chroot目录中的所有子卷:

ls /chroot | xargs btrfs subvolume delete

如果存在不属于 btrfs 子卷的文件或目录,则会打印错误,但不会删除它们。

(在使用 4.6.0 内核和 btrfs-progs v3.17 的 Debian 上测试)