Enhance backup scripts with error handling and directory checks
This commit is contained in:
@@ -1,9 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
set -Eeuo pipefail
|
||||
|
||||
trap 'echo "Error on line $LINENO while writing Postgres dump" >&2' ERR
|
||||
|
||||
ensure_writable_dir() {
|
||||
local dir="$1"
|
||||
mkdir -p "$dir"
|
||||
if [[ ! -d "$dir" || ! -w "$dir" ]]; then
|
||||
echo "Output directory is not writable: $dir" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
TS="$(date +%F_%H%M%S)"
|
||||
OUT="/srv/backups/gitea/pg"
|
||||
mkdir -p "$OUT"
|
||||
ensure_writable_dir "$OUT"
|
||||
artifact="$OUT/gitea-pg-$TS.sql"
|
||||
|
||||
PGUSER="${PGUSER:-gitea}"
|
||||
PGDATABASE="${PGDATABASE:-gitea}"
|
||||
@@ -15,6 +27,11 @@ if [[ ! -f "$PGPASSFILE" ]]; then
|
||||
fi
|
||||
|
||||
export PGPASSWORD="$(cat "$PGPASSFILE")"
|
||||
docker exec -e PGPASSWORD="$PGPASSWORD" gitea-db sh -lc "pg_dump -U '$PGUSER' -d '$PGDATABASE'" > "$OUT/gitea-pg-$TS.sql"
|
||||
docker exec -e PGPASSWORD="$PGPASSWORD" gitea-db sh -lc "pg_dump -U '$PGUSER' -d '$PGDATABASE'" > "$artifact"
|
||||
|
||||
echo "Wrote: $OUT/gitea-pg-$TS.sql"
|
||||
if [[ ! -s "$artifact" ]]; then
|
||||
echo "Backup artifact missing or empty: $artifact" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Wrote: $artifact"
|
||||
|
||||
Reference in New Issue
Block a user