如何安全删除其中包含多个 btrfs 快照的常规目录?

如何安全删除其中包含多个 btrfs 快照的常规目录?

我有一个常规目录,其下面直接包含几个 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 deleterm -rf

答案2

您可以使用btrfs-rm

我在 btrfs 上运行的 docker 安装上使用它,定期清理整个 docker 目录。使用风险自负,但对我有用(TM)。

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

下载:https://github.com/DirkTheDaring/btrfs-rm

相关内容