複数のbtrfsサブボリュームを持つディレクトリを削除するにはどうすればよいですか?


9

ルートファイルシステムは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を実行しています


どのカーネルを実行していて、どのバージョンのbtrfsツールをインストールしていますか?これはおそらくツールのバグです。
David King

@DavidKing編集を参照してください。私はかなり最近のカーネルとbtrfs-progsを実行しています。
StrongBad

私はbtrfsでバグレポートを提出します。それまでの間、ディレクトリのリストをパイプ処理できますgrep chrootか?
デビッドキング

回答:


2

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

ls /chroot | xargs btrfs subvolume delete

btrfsサブボリュームではないファイルまたはディレクトリが存在する場合、エラーが出力されますが、それらは削除されません。

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


0

3番目の質問に答えるには、btrfs-rmを使用できます。

私はbtrfsで実行されているdockerインストールでそれを使用して、定期的にdocker dir全体をクリーンアップします。自己責任で使用してくださいが、私(TM)で機能します。

sudo ./btrfs-rm  /var/lib/docker/*   # create clean empty dir for docker

ダウンロード:https : //github.com/DirkTheDaring/btrfs-rm

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.