su postgres -c 'vacuumdb -q -a -z'
)
}
+
+pg_backup() {
+ local keep_days=7
+ local dir=/var/backups/postgresql
+ local preff="$(date +'%F-%H%M')"
+ local usage="pg_backup [-dir PATH] [-days DAYS]"
+
+ while [ $# -gt 0 ]; do
+ case "$1" in
+ -days) keep_days="$2"; shift ;;
+ -dir) dir="$2"; shift ;;
+ *) echo "$usage" 1>&2; return 1 ;;
+ esac
+ shift
+ done
+
+ if [ ! -w "$dir" ] ; then
+ echo "ERR: can't write into $dir"
+ return 1
+ fi
+
+ cd /
+ su postgres -c 'psql -d template1 -c "select 1" >/dev/null 2>&1' || return 0
+ [ -d "$dir" ] || mkdir -p "$dir"
+ if pg_dumpall --help |grep '\--oids' -q
+ then
+ su postgres -c 'pg_dumpall -c --oids' | bzip2 -9 -c > "$dir"/$preff-pg_dumpall.sql.bz2
+ else
+ su postgres -c 'pg_dumpall -c' | bzip2 -9 -c > "$dir"$preff-/pg_dumpall.sql.bz2
+ fi
+ su postgres -c 'vacuumdb -q -a -z'
+
+ if [ -n "$keep_days" -a "$keep_days" -gt 0 ]; then
+ find $dir/ -type f -mtime +$keep_days -delete
+ fi
+
+}