Mi sistema de archivos raíz está en una partición btrfs. Mi /chroot
directorio tiene una serie de subvolúmenes btrfs que me impiden eliminarlo rm -rf /chroot
. En un intento de eliminar todos los subvolúmenes, traté de enumerar solo los subvolúmenes a continuación /chroot
utilizando el -o
, que la página del manual dice "imprimir solo subvolúmenes debajo de la ruta especificada".
# 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
Para mi sorpresa, esto devuelve el subvolumen en / var / lib / macines (que no quiero eliminar). Esto me lleva a 3 preguntas:
¿Qué hace la
-o
opción?¿Cómo enumero solo los subvolúmenes a continuación?
/chroot
¿Cómo puedo eliminar un directorio con un número desconocido de subvolúmenes?
Estoy ejecutando Arch Linux con el kernel 4.2.5 y btrfs-progs v4.3.1
grep chroot
?Respuestas:
El siguiente comando elimina todos los subvolúmenes en el
/chroot
directorio:ls /chroot | xargs btrfs subvolume delete
En caso de que haya archivos o directorios que no sean subvolúmenes btrfs presentes, se imprimirá un error, pero no se eliminarán.
(Probado en Debian con el kernel 4.6.0 y btrfs-progs v3.17)
fuente
Para responder a su tercera pregunta, puede usar btrfs-rm .
Lo uso en una instalación de docker que se ejecuta en btrfs, para limpiar todo el directorio de docker de forma regular. Úselo bajo su propio riesgo, pero funciona para mí (TM).
Descargar: https://github.com/DirkTheDaring/btrfs-rm
fuente