Mein Root-Dateisystem befindet sich auf einer btrfs-Partition. Mein /chroot
Verzeichnis enthält eine Reihe von btrfs-Subvolumes, mit denen ich es nicht löschen kann rm -rf /chroot
. Bei dem Versuch, alle Subvolumes zu löschen, habe ich versucht, nur die Subvolumes unten aufzulisten, indem ich /chroot
das verwendete -o
, auf dem in der Manpage "Nur Subvolumes unter dem angegebenen Pfad drucken" steht.
# 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
Zu meiner Überraschung gibt dies das Subvolumen in / var / lib / macines zurück (das ich nicht löschen möchte). Dies führt mich zu 3 Fragen:
Was macht die
-o
Option?Wie liste ich unten nur Subvolumes auf?
/chroot
Wie kann ich ein Verzeichnis mit einer unbekannten Anzahl von Subvolumes löschen?
Ich verwende Arch Linux mit dem 4.2.5-Kernel und btrfs-progs v4.3.1
grep chroot
?Antworten:
Der folgende Befehl entfernt alle Subvolumes im
/chroot
Verzeichnis:ls /chroot | xargs btrfs subvolume delete
Falls Dateien oder Verzeichnisse vorhanden sind, für die keine btrfs-Subvolumes vorhanden sind, wird ein Fehler gedruckt, die jedoch nicht entfernt werden.
(Getestet auf Debian mit dem 4.6.0 Kernel und btrfs-progs v3.17)
quelle
Um Ihre dritte Frage zu beantworten, können Sie btrfs-rm verwenden .
Ich verwende es in einer Docker-Installation, die auf btrfs ausgeführt wird, um das gesamte Docker-Verzeichnis regelmäßig zu bereinigen. Die Verwendung erfolgt auf eigenes Risiko, funktioniert aber für mich (TM).
Download: https://github.com/DirkTheDaring/btrfs-rm
quelle