Как удалить каталог с несколькими подразделами btrfs?

9

Моя корневая файловая система находится в разделе btrfs. В моем /chrootкаталоге есть несколько подоболей btrfs, которые мешают мне удалить его с помощью rm -rf /chroot. В попытке удалить все подобъемы, я попытался перечислить только подобъемы ниже /chroot, используя -oстраницу руководства , которая гласит: «печатать только подобъемы ниже указанного пути».

# 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

К моему удивлению, это возвращает подобъем в / var / lib / macines (который я не хочу удалять). Это приводит меня к 3 вопросам:

  1. Что делает -oопция?

  2. Как мне перечислить только подтомы ниже /chroot

  3. Как я могу удалить каталог с неизвестным количеством подразделов?

Я использую Arch Linux с ядром 4.2.5 и btrfs-progs v4.3.1

StrongBad
источник
Какое ядро ​​вы используете и какую версию инструментов btrfs вы установили? Это, вероятно, ошибка в инструментах.
Дэвид Кинг,
@DavidKing см. Редактировать. Я использую довольно свежее ядро ​​и btrfs-progs.
StrongBad
Я бы подал отчет об ошибке с btrfs. В то же время вы могли бы передать список каталогов через grep chroot?
Дэвид Кинг,

Ответы:

2

Следующая команда удаляет все подобъемы в /chrootкаталоге:

ls /chroot | xargs btrfs subvolume delete

Если есть файлы или каталоги, в которых отсутствуют подобъемы btrfs, будет напечатана ошибка, но они не будут удалены.

(Проверено на Debian с ядром 4.6.0 и btrfs-progs v3.17)

Брэм
источник
0

Чтобы ответить на третий вопрос, вы можете использовать btrfs-rm .

Я использую его при установке докера, работающей на btrfs, для регулярной очистки всего каталога докеров. Используй на свой страх и риск, но у меня работает (ТМ).

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

Загрузить: https://github.com/DirkTheDaring/btrfs-rm

Mandragor
источник