From 0a327c96c08fc5c146f17021a787aadce39c9f19 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Fri, 2 Sep 2005 00:21:32 +0000 Subject: Add some stuff git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@2 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede --- backup-postgres | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 backup-postgres (limited to 'backup-postgres') diff --git a/backup-postgres b/backup-postgres new file mode 100755 index 0000000..08aec23 --- /dev/null +++ b/backup-postgres @@ -0,0 +1,59 @@ +#!/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"` +CLIENTBASE=/srv/www/vhosts + +sudo -u postgres psql -l -t | awk '$1 != "" {print $1}' | +while read db; do + if [ "$db" = "template0" -o "$db" = "template1" ] ; then + continue; + fi + + CLIENT=`echo $db | sed -e 's/_.*//'`; + if [ -d "$CLIENTBASE/$CLIENT" ] ; then + BASE="$CLIENTBASE/$CLIENT/pg" + if [ ! -e "$BASE" ]; then + mkdir "$BASE" + chmod 02750 "$BASE" + else + if [ ! -d "$BASE" ]; then + echo "$BASE exists but is not a directory" >&2 + continue + fi + fi + + file="$BASE/$DATE-$db.plain" + sudo -u postgres pg_dump --create --format=p "$db" > "$file" + 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 + + + file="$BASE/$DATE-$db.tar" + sudo -u postgres pg_dump --blobs --create --format=t "$db" > "$file" + bzip2 -- "$file" + + # clean up old stuff + find "$BASE" -name 'MD5-*' -links 1 -print0 | xargs --no-run-if-empty rm -- + else + echo "Not doing a backup of $db" >&2 + fi +done -- cgit v1.2.3