Files
MobilityOps/deploy/unraid/prune-postgres-backups.sh

19 lines
694 B
Bash
Executable File

#!/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