我有一个常规目录,其下面直接包含几个 btrfs 快照。在父目录上执行 an 操作是否安全rm -rf
,或者我是否需要btrfs subvolume delete SUBVOL
在删除父目录之前先对每个快照执行 a 操作?
答案1
rm -rf
本身并不不安全,所以继续运行它吧。但是,它不会完全起作用。由于某种原因,无法通过系统调用删除空的 Btrfs 子卷rmdir(2)
。
rm -rf
将删除所有子卷的所有内容(常规文件等),但空子卷本身以及所有这些子卷的父目录将保留。您必须删除这些目录btrfs subvolume delete
,然后rm -rf
再次运行以处理所有先前无法删除的空非子卷目录。
您可能知道,删除子卷btrfs subvolume delete
比删除其所有内容要快得多。因此,如果您提前知道您将要在的目录树中包含子卷,那么您可以先对它们进行操作,然后再运行(这将完全起作用),从而rm -rf
节省一些工作和时间。btrfs subvolume delete
rm -rf
答案2
您可以使用btrfs-rm。
我在 btrfs 上运行的 docker 安装上使用它,定期清理整个 docker 目录。使用风险自负,但对我有用(TM)。
sudo ./btrfs-rm /var/lib/docker/* # create clean empty dir for docker