Como excluir um diretório com vários subvolumes btrfs?

9

Meu sistema de arquivos raiz está em uma partição btrfs. Meu diretório /chroot tem um número de subvolumes btrfs que me impedem de excluí-lo com rm -rf /chroot . Em uma tentativa de excluir todos os subvolumes, tentei listar apenas os subvolumes abaixo de /chroot usando o -o , que a página man diz "imprima somente subvolumes abaixo do caminho especificado".

# 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 minha surpresa, isso retorna o subvolume em / var / lib / macines (que eu não quero excluir). Isso me leva a 3 perguntas:

  1. O que a opção -o faz?

  2. Como faço para listar apenas subvolumes abaixo de /chroot

  3. Como posso excluir um diretório com um número desconhecido de subvolumes?

Estou executando o Arch Linux com o kernel 4.2.5 e o btrfs-progs v4.3.1

    
por StrongBad 16.10.2015 / 23:29

2 respostas

1

O comando a seguir remove todos os subvolumes no diretório /chroot :

ls /chroot | xargs btrfs subvolume delete

Caso haja arquivos ou diretórios que não sejam subvolumes btrfs, um erro será impresso, mas eles não serão removidos.

(Testado no Debian com o kernel 4.6.0 e btrfs-progs v3.17)

    
por 26.08.2016 / 08:41
0

Para responder à sua terceira pergunta, você pode usar btrfs-rm .

Eu o uso em uma instalação do docker em execução no btrfs, para limpar todo o diretório do docker regularmente. Use a seu próprio risco, mas funciona para mim (TM).

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

Download: link

    
por 09.07.2017 / 10:54

Tags