21 lines
678 B
Bash
21 lines
678 B
Bash
#!/bin/sh
|
|
set -eu
|
|
umask 077
|
|
|
|
app_dir=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)
|
|
backup_dir="$HOME/backups/postgres"
|
|
backup="$backup_dir/postgres-latest.sql"
|
|
temporary="$backup.tmp.$$"
|
|
|
|
log() { logger -t miem-postgres-backup -- "$*" 2>/dev/null || true; }
|
|
|
|
mkdir -p "$backup_dir"
|
|
trap 'status=$?; rm -f -- "$temporary"; [ "$status" -eq 0 ] || log "backup failed"; exit "$status"' EXIT HUP INT TERM
|
|
cd "$app_dir"
|
|
|
|
docker compose exec -T postgres sh -c 'pg_dumpall -U "$POSTGRES_USER"' > "$temporary"
|
|
test -s "$temporary"
|
|
mv "$temporary" "$backup"
|
|
find "$HOME/backups/miem_workers" -maxdepth 1 -type f -name 'miem_workers-*.sql' -delete 2>/dev/null || true
|
|
log "created $backup"
|