#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
BACKUP_PATH=/var/backups

umask 077

rm -f "$BACKUP_PATH"/postgresql_dump*

for cluster in      $(/usr/bin/pg_lsclusters -h | awk '$4 == "online" {printf "%s/%s\n",$1,$2}') ; do
	cl_version="$(/usr/bin/pg_lsclusters -h | awk '$4 == "online" && $1"/"$2 == "'"$cluster"'" {printf "%s\n",$1}')"
	cl_cluster="$(/usr/bin/pg_lsclusters -h | awk '$4 == "online" && $1"/"$2 == "'"$cluster"'" {printf "%s\n",$2}')"
	cl_owner="$(  /usr/bin/pg_lsclusters -h | awk '$4 == "online" && $1"/"$2 == "'"$cluster"'" {printf "%s\n",$5}')"
	
	for i in $(su postgres -c "/usr/bin/psql --cluster \"$cluster\" -At -c 'SELECT datname FROM pg_database WHERE datallowconn;' template1") ; do
		su "$cl_owner" -c "/usr/bin/pg_dump --cluster \"$cluster\" -Fc \"$i\"" | \
			gzip -c > "$BACKUP_PATH/postgresql_dump_${cl_version}_${cl_cluster}_${i}_Fc.gz"
		su "$cl_owner" -c "/usr/bin/pg_dump --cluster \"$cluster\" -Ft \"$i\"" | \
			gzip -c > "$BACKUP_PATH/postgresql_dump_${cl_version}_${cl_cluster}_${i}_Ft.gz"
	done
	
	su "$cl_owner" -c "/usr/bin/pg_dumpall --cluster \"$cluster\"" | gzip -c > "$BACKUP_PATH/postgresql_dumpall_${cl_version}_${cl_cluster}.gz"
done

exit 0
