Initialize clean CSR inventory repository
This commit is contained in:
20
scripts/backup.sh
Normal file
20
scripts/backup.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
umask 077
|
||||
|
||||
BACKUP_DIR=${BACKUP_DIR:-./backups}
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
WORK=$(mktemp -d "$BACKUP_DIR/.backup.XXXXXX")
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
trap 'exit 1' HUP INT TERM
|
||||
STAMP=$(date +%Y-%m-%d_%H%M%S)
|
||||
FILE="$BACKUP_DIR/backup_${STAMP}_$$.sql.gz"
|
||||
|
||||
# Separate commands: POSIX sh has no portable pipefail. Credentials stay inside
|
||||
# the container; a .env file must never be sourced as shell code.
|
||||
docker compose exec -T db sh -c 'exec pg_dump --no-owner --no-acl -U "$POSTGRES_USER" -d "$POSTGRES_DB"' > "$WORK/dump.sql"
|
||||
test -s "$WORK/dump.sql"
|
||||
gzip -c "$WORK/dump.sql" > "$WORK/dump.sql.gz"
|
||||
gzip -t "$WORK/dump.sql.gz"
|
||||
mv "$WORK/dump.sql.gz" "$FILE"
|
||||
echo "Backup erstellt: $FILE"
|
||||
Reference in New Issue
Block a user