#!/bin/bash -l set -eE -o pipefail trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR base=unison-$(date "+%Y:%m:%d") for mountp in /mnt/root /mnt/iroot; do [[ -e $mountp ]] || continue full_base=$mountp/$base existing=( $full_base-* ) if [[ -e ${existing[0]} ]]; then snapshot=$full_base-$(( ${#existing[@]} + 1 )) else snapshot=$full_base-1 fi s btrfs subvolume snapshot -r $mountp $snapshot existing=( $mountp/unison-* ) # keep 10 unison snapshots around if (( ${#existing[@]} > 10 )); then IFS=$'\n' existing=($(sort -Vr <<<"${existing[*]}")) unset IFS s btrfs subvolume delete ${existing[@]:10} fi done