X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fbackupninja.git;a=blobdiff_plain;f=handlers%2Fpgsql;h=23e2c2b42f0553864846b1fba38c91d5d4469e1f;hp=e9d40cf4acb468fd250e2b35d88475f163e495f8;hb=be75e4e6c536882c14db9a41c61585e7a9c045f6;hpb=8f7a366d32296c68fb70c740c6143fec5487df2f diff --git a/handlers/pgsql b/handlers/pgsql index e9d40cf..23e2c2b 100644 --- a/handlers/pgsql +++ b/handlers/pgsql @@ -61,9 +61,13 @@ fi # give backup dir the good uid and permissions # (in respect to the vserver, if $usevserver = yes) -pguid=`getent passwd postgres | awk -F: '{print $3}'` +if [ $usevserver = yes ]; then + pguid=`$VSERVER $vsname exec getent passwd $PGSQLUSER | @AWK@ -F: '{print $3}'` +else + pguid=`getent passwd $PGSQLUSER | @AWK@ -F: '{print $3}'` +fi [ -n "$pguid" ] || \ - fatal "No user called postgres`[ $usevserver = no ] || echo \" on vserver $vsname\"`." + fatal "No user called $PGSQLUSER`[ $usevserver = no ] || echo \" on vserver $vsname\"`." debug "chown $pguid $vroot$backupdir" chown $pguid $vroot$backupdir debug "chmod 700 $vroot$backupdir" @@ -72,13 +76,21 @@ chmod 700 $vroot$backupdir # if $databases = all, use pg_dumpall if [ "$databases" == "all" ]; then if [ $usevserver = yes ]; then - execstr='$VSERVER $vsname exec su - postgres -c "$PGSQLDUMPALL > $backupdir/${vsname}.sql"' + if [ "$compress" == "yes" ]; then + execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$PGSQLDUMPALL | $GZIP > $backupdir/${vsname}.sql.gz\"" + else + execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$PGSQLDUMPALL > $backupdir/${vsname}.sql\"" + fi else - execstr='su - postgres -c "$PGSQLDUMPALL > $backupdir/${localhost}-all.sql"' + if [ "$compress" == "yes" ]; then + execstr="su - $PGSQLUSER -c \"$PGSQLDUMPALL | $GZIP > $backupdir/${localhost}-all.sql.gz\"" + else + execstr="su - $PGSQLUSER -c \"$PGSQLDUMPALL > $backupdir/${localhost}-all.sql\"" + fi fi debug "$execstr" if [ ! $test ]; then - output=`$execstr 2>&1` + output=`eval $execstr 2>&1` code=$? if [ "$code" == "0" ]; then debug $output @@ -92,15 +104,22 @@ if [ "$databases" == "all" ]; then # else use pg_dump on each specified database else for db in $databases; do - if [ $usevserver = yes ] - then - execstr='$VSERVER $vsname exec su - postgres -c "$PGSQLDUMP $db > $backupdir/${db}.sql"' + if [ $usevserver = yes ]; then + if [ "$compress" == "yes" ]; then + execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$PGSQLDUMP $db | $GZIP > $backupdir/${db}.sql.gz\"" + else + execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$PGSQLDUMP $db | > $backupdir/${db}.sql\"" + fi else - execstr='su - postgres -c "$PGSQLDUMP $db > $backupdir/${db}.sql"' + if [ "$compress" == "yes" ]; then + execstr="su - $PGSQLUSER -c \"$PGSQLDUMP $db | $GZIP > $backupdir/${db}.sql.gz\"" + else + execstr="su - $PGSQLUSER -c \"$PGSQLDUMP $db > $backupdir/${db}.sql\"" + fi fi debug "$execstr" if [ ! $test ]; then - output=`$execstr 2>&1` + output=`eval $execstr 2>&1` code=$? if [ "$code" == "0" ]; then debug $output @@ -113,10 +132,5 @@ else done fi -if [ "$compress" == "yes" ]; then - output=`$GZIP -f $vroot$backupdir/*.sql 2>&1` - debug $output -fi - return 0