function mysql_users() { if [ -n "$1" ]; then echo "$1"; else mysql -uroot mysql -e "select User from user;" | grep -Ev '^(User|debian-sys-maint|root|.+-admin)$' | sort -u; fi; }
function mysql_db_user() { if [ -n "$1" ]; then echo "$1"; else mysql -u root mysql -re "select Db from db where User='$2';" | grep -v '^Db$' | sort -u; fi; }
function postgresvalid() { [ -x $postgres_bin ]; }
function postgres_users() { echo "root"; } #FIXME
function postgres_db_user() { if [ -n "$1" ]; then echo "$1"; else su -s /bin/sh postgres -c "/usr/bin/psql -t -c 'select datname from pg_database order by datname' -d template1 | sed -e 's/ //' | grep -v '^template[01]$'"; fi; }
function postgresdump_user_db() { su -s /bin/sh postgres -c "$postgres_bin -O $2"; }
# Check for valid input
for sqltype in $sqltypes; do
case "$sqltype" in
mysql|postgres)
;;
*)
usage
;;
esac
done
for sqltype in $sqltypes; do
if ${sqltype}valid; then
for user in `${sqltype}_users "$users"`; do
home="`gethome_user \"$user\"`"
test -d "$home" || continue
for dir in "`getbackupdir_user \"$user\"`" "`getbackupdir_user \"$user\"`/$sqltype"; do
targetdir="$dir"
if [ ! -d "$targetdir" ]; then
mkdir "$targetdir"
fi
chown "$user": "$targetdir"
chmod u=rX,go= "$targetdir"
done
for db in `${sqltype}_db_user "$databases" "$user"`; do
targetfile="$targetdir/$db${stamp:+.$stamp}.sql"
(set +e; ${sqltype}dump_user_db "$user" "$db"; set -e) > "$targetfile"