Bagaimana cara menghapus direktori dengan beberapa subvolume btrfs?

9

Sistem file root saya ada di partisi btrfs. /chrootDirektori saya memiliki sejumlah subvolume btrfs di dalamnya yang mencegah saya menghapusnya rm -rf /chroot. Dalam upaya untuk menghapus semua subvolume, saya mencoba mendaftar hanya subvolume di bawah ini /chrootdengan menggunakan -o, yang dikatakan halaman manual "hanya mencetak subvolume di bawah jalur yang ditentukan".

# 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

Yang mengejutkan saya, ini mengembalikan subvolume di / var / lib / macines (yang saya tidak ingin hapus). Ini menuntun saya ke 3 pertanyaan:

  1. Apa yang dilakukan -oopsi?

  2. Bagaimana cara saya mendaftar hanya subvolume di bawah ini /chroot

  3. Bagaimana saya bisa menghapus direktori dengan jumlah subvolume yang tidak diketahui?

Saya menjalankan Arch Linux dengan kernel 4.2.5 dan btrfs-progs v4.3.1

StrongBad
sumber
Kernel apa yang Anda jalankan dan versi alat btrf apa yang telah Anda instal? Ini mungkin bug di alat.
David King
@ David, lihat sunting. Saya menjalankan kernel dan btrfs-progs yang cukup baru.
StrongBad
Saya akan mengajukan laporan bug dengan btrfs. Sementara itu, bisakah Anda menyaring daftar direktori grep chroot?
David King

Jawaban:

2

Perintah berikut menghapus semua subvolume di /chrootdirektori:

ls /chroot | xargs btrfs subvolume delete

Jika ada file atau direktori yang bukan merupakan subvolume btrfs, kesalahan akan dicetak, tetapi tidak dihapus.

(Diuji pada Debian dengan kernel 4.6.0 dan btrfs-progs v3.17)

Bram
sumber
0

Untuk menjawab pertanyaan ketiga Anda, Anda dapat menggunakan btrfs-rm .

Saya menggunakannya pada instalasi buruh pelabuhan yang berjalan di btrfs, untuk membersihkan seluruh dir buruh pelabuhan secara teratur. Gunakan dengan risiko Anda sendiri, tetapi bekerja untuk saya (TM).

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

Unduh: https://github.com/DirkTheDaring/btrfs-rm

Mandragor
sumber