私のルートファイルシステムは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つの質問が発生します。
このオプションの
-o
機能は何ですか?下にサブボリュームのみをリストする方法
/chroot
サブボリュームの数が不明なディレクトリを削除する方法は?
私は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でテスト済み)