Restic --keep-within 1m保留策略失效问题求助
Restic --keep-within 1m 策略未删除过期快照的问题解决
问题根源
你遇到的问题是因为restic的forget命令默认按host + tags + paths对快照分组,每个分组独立应用保留策略。你的每个快照对应不同的Paths(比如/home/.snapshots/11、/home/.snapshots/346),所以每个快照都是单独的分组。
--keep-within 1m的逻辑是:在每个分组内,保留该分组最新快照1个月内的所有快照。由于每个分组只有一个快照,它必然属于自己分组的“最新快照1个月内”,所以全部被保留,哪怕它的时间距离当前日期已经超过1个月。
解决办法
要让所有快照统一按全局最新时间应用策略,需要修改分组规则,用--group-by参数指定分组方式:
1. 按主机统一分组
将同一主机的所有快照归为一组,基于该组的全局最新快照时间判断:
restic -r $RESTIC_REPOSITORY forget --keep-within 1m --group-by host --prune
2. 全局无分组
完全取消分组,所有快照按全局最新时间统一处理:
restic -r $RESTIC_REPOSITORY forget --keep-within 1m --group-by "" --prune
效果验证
执行修改后的命令后,再运行restic snapshots,只有2024-02-08(当前2024-03-08往前推1个月)之后的快照会被保留,像458d9d2a这类早于该时间的过期快照会被正确删除。
内容的提问来源于stack exchange,提问作者Louis
相关产品推荐
相关产品推荐

