Як видалити каталог з кількома підтомниками 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


Яке ядро ​​запущено та яку версію інструментів 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, щоб регулярно очищати весь dcker dir. Використовуйте на свій страх і ризик, але працює для мене (TM).

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

Завантажте: https://github.com/DirkTheDaring/btrfs-rm

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.