複数のbtrfsサブボリュームを含むディレクトリを削除する方法は?

複数の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

驚くべきことに、これは/var/lib/macines(削除したくない)のサブボリュームを返します。これにより、3つの質問が発生します。

  1. このオプションの-o機能は何ですか?

  2. 下にサブボリュームのみをリストする方法/chroot

  3. サブボリュームの数が不明なディレクトリを削除する方法は?

私は4.2.5カーネルとbtrfs-progs v4.3.1がインストールされているArch Linuxを実行しています。

ベストアンサー1

次のコマンドは、/chrootディレクトリ内のすべてのサブボリュームを削除します。

ls /chroot | xargs btrfs subvolume delete

btrfsサブボリュームの一部ではないファイルまたはディレクトリがある場合、エラーは印刷されますが削除されません。

(4.6.0カーネルとbtrfs-progs v3.17を使用してDebianでテスト済み)

おすすめ記事