Làm thế nào để xóa một thư mục có nhiều subvolume btrfs?


9

Hệ thống tập tin gốc của tôi là trên một phân vùng btrfs. Thư mục của tôi /chrootcó một số subvolume btrfs trong đó ngăn tôi xóa nó với rm -rf /chroot. Trong một nỗ lực để xóa tất cả các subvolume, tôi đã cố gắng liệt kê chỉ các subvolume bên dưới /chrootbằng cách sử dụng -o, mà trang man nói "chỉ in các subvolume bên dưới đường dẫn được chỉ định".

# 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

Thật ngạc nhiên, điều này trả về subvolume trong / var / lib / macines (mà tôi không muốn xóa). Điều này dẫn tôi đến 3 câu hỏi:

  1. Không những gì -olựa chọn làm gì?

  2. Làm thế nào để tôi chỉ liệt kê các subvolume dưới đây /chroot

  3. Làm cách nào tôi có thể xóa một thư mục có số lượng subvolume không xác định?

Tôi đang chạy Arch Linux với kernel 4.2.5 và btrfs-pross v4.3.1


Hạt nhân nào bạn đang chạy và phiên bản nào của công cụ btrfs bạn đã cài đặt? Đây có lẽ là một lỗi trong các công cụ.
David King

@DavidKing xem chỉnh sửa. Tôi đang chạy một kernel và btrfs-pross gần đây.
StrongBad

Tôi sẽ nộp một báo cáo lỗi với btrfs. Trong thời gian đó, bạn có thể dẫn danh sách các thư mục thông qua grep chroot?
David King

Câu trả lời:


2

Lệnh sau sẽ loại bỏ tất cả các subvolume trong /chrootthư mục:

ls /chroot | xargs btrfs subvolume delete

Trong trường hợp có các tệp hoặc thư mục không phải là tệp con btrfs, một lỗi sẽ được in, nhưng chúng không bị xóa.

(Đã thử nghiệm trên Debian với kernel 4.6.0 và btrfs-pross v3.17)


0

Để trả lời câu hỏi thứ ba của bạn, bạn có thể sử dụng btrfs-rm .

Tôi sử dụng nó trên một bản cài đặt docker chạy trên btrfs, để dọn dẹp toàn bộ dir docker một cách thường xuyên. Sử dụng có nguy cơ của riêng bạn, nhưng làm việc cho tôi (TM).

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

Tải xuống: https://github.com/DirkTheDared/btrfs-rm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.