From b5130c49410c6c1300b9c8f6246a61c4d1e66004 Mon Sep 17 00:00:00 2001
From: Micah Anderson <micah@riseup.net>
Date: Sat, 10 Jun 2006 00:25:16 +0000
Subject: [PATCH] Added in-line compression to pgsql and mysql handlers,
 appears to work fine in tests

---
 ChangeLog      |  2 ++
 handlers/mysql | 19 ++++++++++---------
 handlers/pgsql | 30 ++++++++++++++++++++----------
 3 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b1e9fd7..09f0d0c 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 52193f4..a19509b 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 0c72c82..435bcca 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
 
-- 
GitLab