summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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