Come eliminare una directory con più sottovolumi btrfs?


9

Il mio file system di root è su una partizione btrfs. La mia /chrootdirectory contiene numerosi sottovolumi btrfs che mi impediscono di eliminarla con rm -rf /chroot. Nel tentativo di eliminare tutti i sottovolumi, ho provato a elencare solo i sottovolumi di seguito /chrootusando il -o, che la pagina man dice "stampa solo sottovolumi sotto il percorso specificato".

# 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

Con mia sorpresa, questo restituisce il volume secondario in / var / lib / macines (che non voglio cancellare). Questo mi porta a 3 domande:

  1. Cosa fa l' -oopzione?

  2. Come posso elencare solo i sottovolumi di seguito /chroot

  3. Come posso eliminare una directory con un numero sconosciuto di sottovolumi?

Sto eseguendo Arch Linux con il kernel 4.2.5 e btrfs-progs v4.3.1


Quale kernel stai eseguendo e quale versione degli strumenti btrfs hai installato? Questo è probabilmente un bug negli strumenti.
David King,

@DavidKing vedi modifica. Sto eseguendo un kernel abbastanza recente e btrfs-progs.
StrongBad il

Vorrei presentare una segnalazione di bug con btrfs. Nel frattempo potresti passare attraverso l'elenco delle directory grep chroot?
David King,

Risposte:


2

Il seguente comando rimuove tutti i volumi secondari nella /chrootdirectory:

ls /chroot | xargs btrfs subvolume delete

Nel caso in cui siano presenti file o directory che non sono presenti sottovolumi btrfs, verrà stampato un errore, ma non rimossi.

(Testato su Debian con il kernel 4.6.0 e btrfs-progs v3.17)


0

Per rispondere alla tua terza domanda, puoi usare btrfs-rm .

Lo uso su un'installazione docker in esecuzione su btrfs, per ripulire regolarmente l'intera directory docker. Utilizzare a proprio rischio, ma funziona per me (TM).

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

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.