Skip to content

Instantly share code, notes, and snippets.

@crpb
Last active February 24, 2023 06:01
Show Gist options
  • Save crpb/06d157dba1ef191a50b1b641463d19d2 to your computer and use it in GitHub Desktop.
Save crpb/06d157dba1ef191a50b1b641463d19d2 to your computer and use it in GitHub Desktop.
little script to keep the snapshot-count in check for my truenas. "frequently" went above ~10k as i replicate every hour. syncoid_cleanup.sh
#!/bin/sh
ROOT="p0/bak/home"
frequently=4
hourly=36
daily=30
monthly=3
_remove_old_snaps() {
COUNT=$(echo "{$1}" |wc -l)
#echo "COUNT: ${COUNT}"
if [ "$COUNT" -gt "$2" ]
then
for snap in $(echo "$1"|tail -n +"$2"); do
#DUMMY
echo zfs destroy -v "$snap"
#zfs destroy -v "$snap"
done
fi
}
for DATASET in $(zfs list -r -H -o name "${ROOT}")
do
echo "${DATASET}"
PSNAPS=$(zfs list -H -t snapshot -o name "${DATASET}")
FREQUENTLY=$(echo "${PSNAPS}" | grep frequently)
_remove_old_snaps "$FREQUENTLY" $frequently
HOURLY=$(echo "${PSNAPS}" | grep hourly)
_remove_old_snaps "$HOURLY" $hourly
DAILY=$(echo "${PSNAPS}" | grep daily)
_remove_old_snaps "$DAILY" $daily
MONTHLY=$(echo "${PSNAPS}" | grep monthly)
_remove_old_snaps "$MONTHLY" $monthly
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment