清除所有 Snapper 快照

pal*_*wim 18 opensuse btrfs

OpenSUSE(以及其他发行版)使用snapper拍摄btrfs分区的快照。有些人认为默认快照间隔太快占用太多空间,但无论您是否相信,有时您想要清除文件系统上的空间,并且经常发现btrfs快照占用了大量空间。或者,在其他情况下,您可能希望在将文件系统移入/移出 VM 或更改存储介质或类似内容之前清除所有多余数据的文件系统。

但是,我似乎找不到通过 snapper 或其他工具快速擦除snapper拍摄的所有快照的命令。我该怎么做?

Qua*_*dom 26

最新版本的 snapper 中的命令是(我不记得它是什么时候引入的,但是例如 openSUSE 13.2 中的版本支持这个):

snapper delete number1-number2
Run Code Online (Sandbox Code Playgroud)

因此,要删除所有快照(假设您的快照不超过 100000 个),您可以执行以下操作:

snapper delete 1-100000
Run Code Online (Sandbox Code Playgroud)

显然,这只会删除默认根配置上的快照,因此对于不同的配置,它将是:

snapper -c configname delete number1-number2
Run Code Online (Sandbox Code Playgroud)


pal*_*wim 5

您可以使用for循环删除范围内的所有快照(以root身份运行)。

# for i in `seq 1 999`; do snapper delete $i; done
Run Code Online (Sandbox Code Playgroud)

这将命中一些无效条目(当数字与快照 ID 不对应时),这将导致无害的错误日志。

要确定快照 ID 的范围(下限和上限),以便循环不会运行过长,请使用:

snapper list
Run Code Online (Sandbox Code Playgroud)

我找到了这个解决方案以及关于如何减少快照程序间隔和保留设置的讨论