#!/bin/sh

DATA_DIR=/tmp/pgsql/data
DB_NAME=testdb
ARCHIVE_DIR=$DATA_DIR/archive
BACKUP=backup.tar
TMP=/tmp/hotbackup

# Standalone hot backup.
touch $DATA_DIR/backup_in_progress
psql $DB_NAME -c "SELECT pg_start_backup('hot_backup');"
tar -cf $BACKUP $DATA_DIR
psql $DB_NAME -c "SELECT pg_stop_backup();"
sleep 10 # Why we need this?
rm $DATA_DIR/backup_in_progress

# Cleanup work space.
rm -fr $TMP
mkdir -p $TMP

# Expand the backup.
tar -xvf $BACKUP -C $TMP
PG_XLOG_DIR=`find $TMP -type d | grep pg_xlog | head -1`

# Remove all WAL segment files.
rm -fr $PG_XLOG_DIR

mkdir -p $PG_XLOG_DIR/archive_status

# Copy archived WAL segment files to pg_xlog/.
cp $ARCHIVE_DIR/* $PG_XLOG_DIR

# Make tar archive.
tar -cf ${BACKUP} $DATA_DIR
