You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
794 B
Bash
31 lines
794 B
Bash
6 years ago
|
#!/bin/sh
|
||
|
|
||
|
dest="/backup/base-$(date +%F-%H%M)"
|
||
|
last=$(ls -d /backup/base* | tail -n1)
|
||
|
mkdir $dest || exit $?
|
||
|
|
||
|
pg_basebackup --pgdata=$dest --format=tar --gzip --username=postgres || exit $?
|
||
|
|
||
|
# Clean old base backups, keep the last and the current.
|
||
|
for d in /backup/base*; do
|
||
|
if [ "$d" == "$last" ] || [ "$d" == "$dest" ]; then
|
||
|
continue
|
||
|
fi
|
||
|
rm -r $d || exit $?
|
||
|
done
|
||
|
|
||
|
# Clean the wall archive
|
||
|
cd /backup/wal_archive || exit $?
|
||
|
if [ $(ls *.*.backup | wc -l) -lt 2 ]; then
|
||
|
ls /backup/wal_archive
|
||
|
exit 0
|
||
|
fi
|
||
|
# Find the single last wal.backup point
|
||
|
prev_wal_start="$(ls *.*.backup | tail -n2 | head -n1)"
|
||
|
for f in $(ls) ; do
|
||
|
if [ "$f" \< "$prev_wal_start" ] || [ "$f" \= "$prev_wal_start" ]; then
|
||
|
rm -v /backup/wal_archive/$f
|
||
|
fi
|
||
|
done
|
||
|
ls /backup/wal_archive
|