Jak usunąć katalog z wieloma podwoluminami btrfs?

9

Mój główny system plików znajduje się na partycji btrfs. Mój /chrootkatalog zawiera wiele podwoluminów btrfs, które uniemożliwiają mi jego usunięcie rm -rf /chroot. Próbując usunąć wszystkie podwoluminy, próbowałem wyświetlić tylko te podwolumeny poniżej /chroot, używając strony -o, która mówi: „drukuj tylko podwolumny poniżej określonej ścieżki”.

# 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

Ku mojemu zdziwieniu zwraca to podobjętość w / var / lib / macines (których nie chcę usuwać). To prowadzi mnie do 3 pytań:

  1. Co robi -oopcja?

  2. Jak wyświetlić poniżej tylko podobjętości /chroot

  3. Jak mogę usunąć katalog z nieznaną liczbą podwoluminów?

Używam Arch Linux z jądrem 4.2.5 i btrfs-progs v4.3.1

StrongBad
źródło
Z jakiego jądra korzystasz i jaką wersję narzędzi btrfs zainstalowałeś? Jest to prawdopodobnie błąd w narzędziach.
David King,
@DavidKing patrz edycja. Używam całkiem nowego jądra i btrfs-progs.
StrongBad,
Złożyłbym raport błędu w btrfs. Czy w międzyczasie mógłbyś przerzucić listę katalogów grep chroot?
David King

Odpowiedzi:

2

Następujące polecenie usuwa wszystkie podwoluminy z /chrootkatalogu:

ls /chroot | xargs btrfs subvolume delete

W przypadku plików lub katalogów, które nie są podwoluminami btrfs, zostanie wydrukowany błąd, ale nie zostaną one usunięte.

(Testowane na Debianie z jądrem 4.6.0 i btrfs-progs v3.17)

Bram
źródło
0

Aby odpowiedzieć na trzecie pytanie, możesz użyć btrfs-rm .

Używam go w instalacji dokera działającej na btrfs, aby regularnie czyścić cały katalog dokerów. Używaj na własne ryzyko, ale działa dla mnie (TM).

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

Pobierz: https://github.com/DirkTheDaring/btrfs-rm

Mandragor
źródło