mirror of
https://github.com/Snigdha-OS/snigdhaos-pkgbuilds.git
synced 2025-09-22 04:25:02 +02:00

Some checks are pending
Check Conventional Commit / check-commit-message (push) Waiting to run
43 lines
1.4 KiB
Bash
43 lines
1.4 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
get_children_recursive() {
|
|
local children="$(echo "$VOLUMES" | awk -v id=$1 '{if (id == $7) {print $2}}')"
|
|
if [ ! -z "$children" ]; then
|
|
while IFS= read -r line ; do get_children_recursive $line; done <<< "$children"
|
|
echo "$children"
|
|
fi
|
|
}
|
|
|
|
if [[ "$(findmnt / -o options)" != *"subvol=/@"* ]]; then
|
|
echo "You are still booted into a snapshot."
|
|
exit
|
|
fi
|
|
|
|
# First, we stop snapperd so we don't screw stuff up. It will auto start when needed anyway.
|
|
systemctl stop snapperd
|
|
|
|
VOLUMES="$(btrfs subvolume list /)"
|
|
TO_DELETE=""
|
|
|
|
OLD_ROOTS="$(echo "$VOLUMES" | awk '/@_backup_[0-9]+\S+$/ {print $2} /restore_backup_\S+_[0-9]+$/ {print $2} /timeshift-btrfs\/snapshots\/[^\/]+\/@$/ {print $2}')"
|
|
# Find all children of OLD_ROOTS recursively
|
|
OLD_ROOTS_CHILDREN="$(while IFS= read -r line ; do get_children_recursive $line; done <<< "$OLD_ROOTS")"
|
|
|
|
TO_DELETE="$OLD_ROOTS_CHILDREN $OLD_ROOTS"
|
|
|
|
SNAPSHOTS_VOL="$(echo "$VOLUMES" | awk '/ .snapshots$/ {print $2; exit}')"
|
|
if [ ! -z "$SNAPSHOTS_VOL" ]; then
|
|
TO_DELETE+=" $(get_children_recursive $SNAPSHOTS_VOL) $SNAPSHOTS_VOL"
|
|
fi
|
|
|
|
for i in $TO_DELETE
|
|
do
|
|
btrfs subvolume delete -i $i /
|
|
done
|
|
|
|
# Now we force recreate the snapper configs
|
|
rm -f /etc/snapper/configs/*
|
|
rm -r /.snapshots/ || true
|
|
sed -i /etc/conf.d/snapper -e 's,SNAPPER_CONFIGS=.*,SNAPPER_CONFIGS=\"\",'
|
|
snapper create-config --template garuda / |