清除所有 Snapper 快照

清除所有 Snapper 快照

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

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

答案1

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

snapper delete number1-number2

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

snapper delete 1-100000

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

snapper -c configname delete number1-number2

答案2

您可以使用for循环来删除某个范围内的所有快照(运行为)。

# for i in `seq 1 999`; do snapper delete $i; done

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

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

snapper list

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

答案3

内线:

sudo snapper -c root delete $(sudo snapper -c root list --columns number | tail +4)
  • sudo snapper -c root list --columns number— 列出快照编号
  • tail +4— 跳过 2 个标题行和编号为 0 的快照,这不是快照,而是子卷
  • sudo snapper -c root delete— 删除一个或多个快照。该命令接受无限数量的参数

答案4

如果您正在使用较旧版本的 snapper(例如 Debian jessie),则可以使用 bash-expansion:

snapper delete {1..999}

相关内容