diff --git a/ChangeLog b/ChangeLog
index b1e9fd700ddfcf2dc6d9284d8398a60b0972131a..09f0d0c4d06bd14a7f50f380755ea41ade55ccd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,11 +15,13 @@ version 0.9.4 -- unreleased
 	 . Fixed erroneous removal of tmpfile when it didn't exit
 	 . Fixed inversed vsname emptiness check
 	 . Fixed su quote usage to be more posixy
+	 . compress for sqldumps now happens in-line to save some disk space (Closes: #370778)
 	pgsql:
 	 . Fixed inversed vsname emptiness check
 	 . Fixed su quote usage to be more posixy
 	 . Fixed shell expansion, thanks Thomas Kotzian (Closes: #363297)
 	 . postgres user UID is now the one from inside the vserver if necessary
+	 . compress now happens in-line to save some disk space (Closes: #370778)
 	svn:
 	 . Fixed inversed vsname emptiness check
 	rdiff:
diff --git a/handlers/mysql b/handlers/mysql
index 52193f4ec0afa8642dd0daaf7ddc299315952f1f..a19509bf062545b0192b42db6974d49fa9a5d060 100644
--- a/handlers/mysql
+++ b/handlers/mysql
@@ -249,9 +249,17 @@ fi
 	do
 		if [ $usevserver = yes ]
 		then
-			execstr="$VSERVER $vsname exec $MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db > $vroot$dumpdir/${db}.sql"
+                   if [ "$compress" == "yes" ]; then
+                      execstr="$VSERVER $vsname exec $MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db | $GZIP > $vroot$dumpdir/${db}.sql.gz"
+                   else
+                      execstr="$VSERVER $vsname exec $MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db > $vroot$dumpdir/${db}.sql"
+                   fi
 		else
-			execstr="$MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db > $dumpdir/${db}.sql"
+                   if [ "$compress" == "yes" ]; then
+                      execstr="$MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db | $GZIP > $dumpdir/${db}.sql.gz"
+                   else
+                      execstr="$MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db > $dumpdir/${db}.sql"
+                   fi
 		fi
 		debug "su $user -c \"$execstr\""
 		if [ ! $test ]
@@ -268,13 +276,6 @@ fi
 			fi
 		fi
 	done
-	
-	if [ "$compress" == "yes" ]
-	then
-		output=`$GZIP -f $vroot$dumpdir/*.sql 2>&1`
-		debug $output
-	fi
-fi
 
 # clean up tmp config file
 if [ "$dbusername" != "" -a "$dbpassword" != "" ]
diff --git a/handlers/pgsql b/handlers/pgsql
index 0c72c82ec04294ee6a0f610a1e196aa9f9be2c0a..435bccab92bb0af12616c232b05bc864e9c34250 100644
--- a/handlers/pgsql
+++ b/handlers/pgsql
@@ -76,9 +76,17 @@ 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 - postgres -c \"$PGSQLDUMPALL | $GZIP > $backupdir/${vsname}.sql.gz\""
+       else
+          execstr="$VSERVER $vsname exec su - postgres -c \"$PGSQLDUMPALL > $backupdir/${vsname}.sql\""
+       fi
     else
+       if [ "$compress" == "yes" ]; then
+          execstr="su - postgres -c \"$PGSQLDUMPALL | $GZIP > $backupdir/${localhost}-all.sql.gz\""
+       else
 	execstr="su - postgres -c \"$PGSQLDUMPALL > $backupdir/${localhost}-all.sql\""
+       fi
     fi
     debug "$execstr"
     if [ ! $test ]; then
@@ -96,11 +104,18 @@ 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 - postgres -c \"$PGSQLDUMP $db | $GZIP > $backupdir/${db}.sql.gz\""
+           else
+              execstr="$VSERVER $vsname exec su - postgres -c \"$PGSQLDUMP $db | > $backupdir/${db}.sql\""
+           fi
 	else
-	    execstr="su - postgres -c \"$PGSQLDUMP $db > $backupdir/${db}.sql\""
+           if [ "$compress" == "yes" ]; then
+              execstr="su - postgres -c \"$PGSQLDUMP $db | $GZIP > $backupdir/${db}.sql.gz\""
+           else
+              execstr="su - postgres -c \"$PGSQLDUMP $db > $backupdir/${db}.sql\""
+           fi
 	fi
 	debug "$execstr"
 	if [ ! $test ]; then
@@ -117,10 +132,5 @@ else
     done
 fi
 
-if [ "$compress" == "yes" ]; then
-    output=`$GZIP -f $vroot$backupdir/*.sql 2>&1`
-    debug $output
-fi
-
 return 0