#!/bin/sh set -eu destination="${1:-backups/postgres}" retention_days="${BACKUP_RETENTION_DAYS:-30}" minimum_copies="${BACKUP_MINIMUM_COPIES:-7}" case "$destination" in ""|"/"|".") echo "Unsafe backup destination: $destination" >&2; exit 1;; esac case "$retention_days:$minimum_copies" in *[!0-9:]*|:*|*:) echo "Retention values must be integers" >&2; exit 1;; esac [ -d "$destination" ] || exit 0 count=0 find "$destination" -maxdepth 1 -type f -name 'mobilityops-*.dump' | sort -r | while IFS= read -r file; do count=$((count + 1)) if [ "$count" -gt "$minimum_copies" ] && [ -n "$(find "$file" -mtime "+$retention_days" -print)" ]; then rm -f -- "$file" "${file}.sha256" fi done