Mon système de fichiers racine se trouve sur une partition btrfs. Mon /chroot
répertoire contient un certain nombre de sous-volumes btrfs qui m'empêchent de le supprimer avec rm -rf /chroot
. Dans une tentative de supprimer tous les sous-volumes, j'ai essayé de répertorier uniquement les sous-volumes ci-dessous /chroot
en utilisant le -o
, dont la page de manuel indique "imprimer uniquement les sous-volumes sous le chemin spécifié".
# 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
À ma grande surprise, cela renvoie le sous-volume dans / var / lib / macines (que je ne veux pas supprimer). Cela m'amène à 3 questions:
Que fait l'
-o
option?Comment répertorier uniquement les sous-volumes ci-dessous
/chroot
Comment supprimer un répertoire avec un nombre inconnu de sous-volumes?
J'utilise Arch Linux avec le noyau 4.2.5 et btrfs-progs v4.3.1
grep chroot
?Réponses:
La commande suivante supprime tous les sous-volumes du
/chroot
répertoire:ls /chroot | xargs btrfs subvolume delete
Dans le cas où il y a des fichiers ou des répertoires qui ne sont pas des sous-volumes btrfs présents, une erreur sera imprimée, mais ils ne seront pas supprimés.
(Testé sur Debian avec le noyau 4.6.0 et btrfs-progs v3.17)
la source
Pour répondre à votre troisième question, vous pouvez utiliser btrfs-rm .
Je l'utilise sur une installation de docker fonctionnant sur btrfs, pour nettoyer régulièrement le répertoire docker entier. Utilisez à vos risques et périls, mais fonctionne pour moi (TM).
Téléchargement: https://github.com/DirkTheDaring/btrfs-rm
la source