From 94318ebc447acb14579528245d77bcbb3ac1a14c Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sat, 15 Sep 2007 15:27:27 +0000 Subject: add backup-pg git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@295 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede --- backup-pg | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 backup-pg diff --git a/backup-pg b/backup-pg new file mode 100755 index 0000000..15b5725 --- /dev/null +++ b/backup-pg @@ -0,0 +1,55 @@ +#!/bin/sh + +# +# Copyright (c) 2002, 2003, 2004, 2005 Peter Palfrader +# +# All rights reserved. +# +# + +umask 037 + +set -e +set -u + +DATE=`date "+%Y%m%d-%H%M%S"` + +#PORT="-p 5433" +if [ -z "${PORT:-}" ]; then + PORT="" +fi +if [ -z "${PREFIX:-}" ]; then + PREFIX="" +else + PREFIX="$PREFIX-" +fi + +if [ -d /var/backups/local/pg ]; then + BASE=/var/backups/local/pg +elif [ -d /var/local/backup/pg ]; then + BASE=/var/local/backup/pg +elif [ -d /aux/dbbackup/pg ]; then + BASE=/aux/dbbackup/pg +else + echo "Cannot find a backup target directory" >&2 + exit 1 +fi + +sudo -u postgres psql $PORT -l -t | awk '$1 != "" {print $1}' | +while read db; do + if [ "$db" = "template0" -o "$db" = "template1" ] ; then + continue; + fi + + file="$BASE/$DATE-$PREFIX$db.plain" + sudo -u postgres pg_dump $PORT --create --format=p "$db" > "$file" + nice bzip2 -- "$file" + + md5=`md5sum -- "$file.bz2" | awk '{print $1}'` + if [ -e "$BASE/MD5-$md5" ]; then + rm -- "$file.bz2" + ln "$BASE/MD5-$md5" "$file.bz2" + else + ln "$file.bz2" "$BASE/MD5-$md5" + fi +done -- cgit v1.2.3