summaryrefslogtreecommitdiff
path: root/backup-pg
diff options
context:
space:
mode:
authorPeter Palfrader <peter@palfrader.org>2007-09-15 15:27:27 +0000
committerweasel <weasel@bc3d92e2-beff-0310-a7cd-cc87d7ac0ede>2007-09-15 15:27:27 +0000
commit94318ebc447acb14579528245d77bcbb3ac1a14c (patch)
tree26f0d85409cb158cfae75ecaecd42ebc51783ce6 /backup-pg
parentb1ca1a5929bbeb910cfe428fed2fc3b5ce3f550f (diff)
add backup-pg
git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@295 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede
Diffstat (limited to 'backup-pg')
-rwxr-xr-xbackup-pg55
1 files changed, 55 insertions, 0 deletions
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 <peter@palfrader.org>
+#
+# 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