Collection of cookbooks for Podman Quadlets
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

37 lines
1.0 KiB

#!/bin/bash
set -Eeuo pipefail
last_backup=""
for f in /var/lib/postgresql/backup/*/backup_manifest; do
# If there are no backups, the glob pattern above won't match any files
if [ ! -f "$f" ]; then
continue
fi
# Check if this is the most recent backup
if [ -z "$last_backup" ] || [ "$f" -nt "$last_backup" ]; then
last_backup="$f"
fi
done
if [ -n "$last_backup" ]; then
last_backup=$(dirname "$last_backup")
echo "Restoring from last backup: $last_backup..."
mkdir -p "$PGDATA"
tar -xvf "$last_backup/base.tar" -C "$PGDATA"
if [ -f "$last_backup/pg_wal.tar" ]; then
mkdir -p "$PGDATA/pg_wal"
tar -xvf "$last_backup/pg_wal.tar" -C "$PGDATA/pg_wal"
fi
echo "Verifying backup integrity..."
pg_verifybackup -m "$last_backup/backup_manifest" "$PGDATA"
echo "Setting ownership and permissions..."
chown -R postgres:postgres "$PGDATA"
chmod 700 "$PGDATA"
echo "Restoration complete."
exit 0
fi
echo "No previous backup found, initializing an empty database!"
exec /usr/local/bin/docker-ensure-initdb.sh