#!/bin/sh
# All'avvio: la copia del sistema che limine-snapper-restore lascia a ogni ripristino è uno snapshot "single"
# senza algoritmo di pulizia e resterebbe per sempre (R36). La si mette sotto la pulizia "number" come
# importante: resta fra gli importanti e alla lunga viene ruotata.
# Il ripristino non la marca in alcun modo (info.xml con solo tipo, numero, data e descrizione), quindi la si
# riconosce dall'ora: viene creata nello stesso istante dell'attuale sottovolume @ (entro 30 s; con 5 minuti
# veniva preso anche uno snapshot manuale fatto poco prima del ripristino, report 14). Gli snapshot manuali
# dell'utente, anch'essi "single" senza pulizia, non si toccano.
set -eu
[ -e /etc/snapper/configs/root ] || exit 0
creazione=$(btrfs subvolume show / 2>/dev/null | sed -n 's/^[[:space:]]*Creation time:[[:space:]]*//p')
[ -n "$creazione" ] || exit 0
t_radice=$(date -d "$creazione" +%s)
snapper --no-dbus -c root --csvout list --columns number,type,cleanup,date 2>/dev/null |
    awk -F, 'NR > 1 && $1 != 0 && $2 == "single" && $3 == "" {print $1 "," $4}' |
    while IFS=, read -r n data; do
        t=$(date -d "$data" +%s) || continue
        d=$((t - t_radice)); [ $d -lt 0 ] && d=$((-d))
        if [ $d -le 30 ]; then
            snapper --no-dbus -c root modify --cleanup-algorithm number --userdata important=yes "$n"
            echo "snapshot $n (backup del ripristino): pulizia number, importante"
        fi
    done
