#!/bin/bash # Dump the Garmin database to a per-ISO-week file, keeping the two newest weeks. set -euo pipefail cnf=${XDG_CONFIG_HOME:-$HOME/.config}/negsplit/dump.cnf dir=${XDG_DATA_HOME:-$HOME/.local/share}/negsplit/dumps out=$dir/Garmin-$(date +%G-W%V).sql.gz keep=2 umask 077 mkdir -p "$dir" # Write to a temporary file so a failed dump never replaces a good one tmp=$(mktemp "$dir/.dump.XXXXXX") trap 'rm -f "$tmp"' EXIT mariadb-dump --defaults-extra-file="$cnf" --single-transaction --databases Garmin | gzip > "$tmp" mv "$tmp" "$out" # Names sort by week, so all but the last $keep are the old ones dumps=("$dir"/Garmin-*.sql.gz) if (( ${#dumps[@]} > keep )); then rm -f -- "${dumps[@]:0:${#dumps[@]}-keep}" fi