Meu sistema de arquivos raiz está em uma partição btrfs. Meu /chroot
diretório possui vários subvolumes btrfs, o que me impede de excluí-lo rm -rf /chroot
. Em uma tentativa de excluir todos os subvolumes, tentei listar apenas os subvolumes abaixo /chroot
usando o -o
, que a página do manual diz "imprima apenas 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:
O que a
-o
opção faz?Como listar apenas subvolumes abaixo
/chroot
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
grep chroot
?Respostas:
O comando a seguir remove todos os subvolumes no
/chroot
diretório: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 o btrfs-progs v3.17)
fonte
Para responder à sua terceira pergunta, você pode usar o 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 por sua conta e risco, mas funciona para mim (TM).
Faça o download: https://github.com/DirkTheDaring/btrfs-rm
fonte