#!/bin/bash # Dump the Weather database (ens-forecast) to a per-ISO-week file, keeping the two newest weeks. set -euo pipefail cnf=${XDG_CONFIG_HOME:-$HOME/.config}/ens-forecast/dump.cnf dir=${XDG_DATA_HOME:-$HOME/.local/share}/ens-forecast/dumps out=$dir/Weather-$(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 Weather | gzip > "$tmp" mv "$tmp" "$out" # Names sort by week, so all but the last $keep are the old ones dumps=("$dir"/Weather-*.sql.gz) if (( ${#dumps[@]} > keep )); then rm -f -- "${dumps[@]:0:${#dumps[@]}-keep}" fi