Automatic pg_basebackup and wal_archive cleaning

This commit is contained in:
Tim Möhlmann
2018-11-28 18:41:31 +02:00
parent e89d354834
commit e8d05c657f
5 changed files with 42 additions and 3 deletions

View File

@@ -0,0 +1,30 @@
#!/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