-
Notifications
You must be signed in to change notification settings - Fork 816
/
restore_example.sh
executable file
·71 lines (62 loc) · 1.87 KB
/
restore_example.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash
function usage()
{
cat <<__EOT__
Usage: $0 --scope=SCOPE --datadir=DATADIR --backup_directory=BACKUPDIR
__EOT__
}
optspec=":-:"
while getopts "$optspec" optchar; do
case "${optchar}" in
-)
case "${OPTARG}" in
help)
usage
exit 0
;;
scope)
PATRONI_SCOPE="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
;;
scope=*)
PATRONI_SCOPE="${OPTARG#*=}"
;;
datadir)
PGDATA="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
;;
datadir=*)
PGDATA="${OPTARG#*=}"
;;
backup_directory)
BACKUPDIR="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
;;
backup_directory=*)
BACKUPDIR="${OPTARG#*=}"
;;
*)
true
;;
esac;;
*)
if [ "$OPTERR" != 1 ] || [ "${optspec:0:1}" = ":" ]; then
echo "Non-option argument: '-${OPTARG}'" >&2
usage
exit 1
fi
;;
esac
done
function die()
{
echo "$1"
exit 1
}
[[ -z ${PATRONI_SCOPE} ]] && usage && exit 1
[[ -z ${PGDATA} ]] && usage && exit 1
[[ -z ${BACKUPDIR} ]] && usage && exit 1
[[ -d "${PGDATA}" ]] && die "Will not overwrite existing PGDATA directory, stopping example restore"
LATESTBACKUP="$(ls -tr "${BACKUPDIR}/${PATRONI_SCOPE}/basebackup_"*.tar.gz | tail -n 1)"
[[ ! -f "${LATESTBACKUP}" ]] && die "Can not find the backup, stopping example restore"
mkdir -p "${PGDATA}"
tar xzfp "${LATESTBACKUP}" -C "${PGDATA}"
chmod 0700 "${PGDATA}"
echo "Restored ${LATESTBACKUP} into PGDATA=${PGDATA}"