22 lines
748 B
Bash
Executable File
22 lines
748 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Backup Postgres + RustFS volume data for pargar.
|
|
# Usage: ./scripts/backup.sh [output-dir]
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
OUT="${1:-$ROOT/backups/$(date -u +%Y%m%dT%H%M%SZ)}"
|
|
mkdir -p "$OUT"
|
|
|
|
echo "Backing up Postgres to $OUT/postgres.sql.gz"
|
|
docker compose -f "$ROOT/docker-compose.yml" exec -T postgres \
|
|
pg_dump -U "${POSTGRES_USER:-pargar}" "${POSTGRES_DB:-pargar}" | gzip > "$OUT/postgres.sql.gz"
|
|
|
|
echo "Backing up RustFS volume snapshot marker to $OUT"
|
|
docker compose -f "$ROOT/docker-compose.yml" exec -T rustfs \
|
|
sh -c 'tar -C /data -czf - .' > "$OUT/rustfs-data.tar.gz" || {
|
|
echo "Note: if rustfs tar failed, copy volume rustfs_data manually" >&2
|
|
}
|
|
|
|
echo "Done: $OUT"
|
|
ls -lh "$OUT"
|