snapshot: preserve backup UX, remote target setup, and docs updates
This commit is contained in:
36
scripts/backup_create.sh
Normal file
36
scripts/backup_create.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
set -a
|
||||
. ./.env
|
||||
set +a
|
||||
|
||||
timestamp="$(date +"%Y%m%d_%H%M%S")"
|
||||
backup_dir="${1:-$ROOT_DIR/backend/backups/backup_${timestamp}}"
|
||||
mkdir -p "$backup_dir"
|
||||
|
||||
db_dump_path="$backup_dir/db.dump"
|
||||
media_archive_path="$backup_dir/media.tar.gz"
|
||||
meta_path="$backup_dir/backup_meta.env"
|
||||
checksums_path="$backup_dir/SHA256SUMS"
|
||||
|
||||
docker compose exec -T db sh -lc "PGPASSWORD='$POSTGRES_PASSWORD' pg_dump -U '$POSTGRES_USER' -d '$POSTGRES_DB' -Fc --no-owner --no-privileges" > "$db_dump_path"
|
||||
tar -C "$ROOT_DIR/backend" -czf "$media_archive_path" media
|
||||
|
||||
cat > "$meta_path" <<EOF
|
||||
BACKUP_CREATED_AT=$timestamp
|
||||
POSTGRES_DB=$POSTGRES_DB
|
||||
POSTGRES_USER=$POSTGRES_USER
|
||||
DB_DUMP_FILE=$(basename "$db_dump_path")
|
||||
MEDIA_ARCHIVE_FILE=$(basename "$media_archive_path")
|
||||
EOF
|
||||
|
||||
(
|
||||
cd "$backup_dir"
|
||||
shasum -a 256 "$(basename "$db_dump_path")" "$(basename "$media_archive_path")" > "$checksums_path"
|
||||
)
|
||||
|
||||
printf '%s\n' "$backup_dir"
|
||||
Reference in New Issue
Block a user