¿Cómo eliminar un directorio con múltiples subvolúmenes btrfs?

9

Mi sistema de archivos raíz está en una partición btrfs. Mi /chrootdirectorio 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 /chrootutilizando 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:

  1. ¿Qué hace la -oopción?

  2. ¿Cómo enumero solo los subvolúmenes a continuación? /chroot

  3. ¿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

Fuerte
fuente
¿Qué núcleo está ejecutando y qué versión de las herramientas btrfs tiene instaladas? Esto es probablemente un error en las herramientas.
David King
@DavidKing ver editar. Estoy ejecutando un kernel bastante reciente y btrfs-progs.
StrongBad
Presentaría un informe de error con btrfs. Mientras tanto, ¿podría canalizar la lista de directorios grep chroot?
David King

Respuestas:

2

El siguiente comando elimina todos los subvolúmenes en el /chrootdirectorio:

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)

Bram
fuente
0

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).

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

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

Mandragor
fuente