Description: Allow on-the-fly compression
Author: Thomas Goirand <zigo@debian.org>
Bug-Debian: https://bugs.debian.org/769657
Forwarded: no
Last-Update: 2020-07-27

--- automysqlbackup-2.6+debian.4.orig/automysqlbackup
+++ automysqlbackup-2.6+debian.4/automysqlbackup
@@ -79,6 +79,9 @@ DOWEEKLY=6
 # Choose Compression type. (gzip or bzip2)
 COMP=gzip
 
+# Compress backups on the fly with gzip or bzip2 (yes or no)
+COMPDIRECT=no
+
 # Compress communications between backup server and MySQL server?
 COMMCOMP=no
 
@@ -420,26 +423,54 @@ exec 2> $LOGERR     # stderr replaced wi
 
 # Functions
 
+SUFFIX=""
+
 # Database dump function
 dbdump () {
-	touch $2
-	chmod 600 $2
-	if [ $1 = "information_schema" ] ; then
+	if [ "$1" = "information_schema" ] ; then
 		NEWOPT="--skip-opt ${OPT}"
 	else
 		NEWOPT="--opt $OPT"
 	fi
 
-	if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
-		mysqldump --defaults-file=/etc/mysql/debian.cnf $NEWOPT $1 > $2
+	if [ "$COMPDIRECT" = "yes" ] && ( [ "$COMP" = "gzip" ] || [ "$COMP" = "bzip2" ] ); then
+		if [ "$COMP" = "gzip" ]; then
+			SUFFIX=".gz"
+			touch "$2.gz"
+			chmod 600 "$2.gz"
+			if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
+				mysqldump --defaults-file=/etc/mysql/debian.cnf $NEWOPT $1 | gzip -f > "$2.gz"
+			else
+				mysqldump --user=$USERNAME --password=$PASSWORD --host=$DBHOST $NEWOPT $1  | gzip -f > "$2.gz"
+			fi
+		elif [ "$COMP" = "bzip2" ]; then
+			SUFFIX=".bz2"
+			touch "$2.bz2"
+                        chmod 600 "$2.bz2"
+			if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
+                                mysqldump --defaults-file=/etc/mysql/debian.cnf $NEWOPT $1 | gzip -f > "$2.bz2"
+                        else
+                                mysqldump --user=$USERNAME --password=$PASSWORD --host=$DBHOST $NEWOPT $1  | gzip -f > "$2.bz2"
+                        fi
+		fi
 	else
-		mysqldump --user=$USERNAME --password=$PASSWORD --host=$DBHOST $NEWOPT $1 > $2
+	        touch $2
+		chmod 600 $2
+		if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
+			mysqldump --defaults-file=/etc/mysql/debian.cnf $NEWOPT $1 > $2
+			compression $2
+		else
+			mysqldump --user=$USERNAME --password=$PASSWORD --host=$DBHOST $NEWOPT $1 > $2
+			compression $2
+		fi
+	fi
+	if [ "$LATEST" = "yes" ]; then
+		cp $2$SUFFIX "$BACKUPDIR/latest/"
 	fi
 	return 0
 }
 
 # Compression function plus latest copy
-SUFFIX=""
 compression () {
 if [ "$COMP" = "gzip" ]; then
 	gzip -f "$1"
@@ -454,9 +485,6 @@ elif [ "$COMP" = "bzip2" ]; then
 else
 	echo "No compression option set, check advanced settings"
 fi
-if [ "$LATEST" = "yes" ]; then
-	cp $1$SUFFIX "$BACKUPDIR/latest/"
-fi	
 return 0
 }
 
@@ -536,7 +564,6 @@ echo ===================================
 			fi
 			echo Monthly Backup of $MDB...
 				dbdump "$MDB" "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql"
-				compression "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql"
 				BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql$SUFFIX"
 			echo ----------------------------------------------------------------------
 		done
@@ -572,7 +599,6 @@ echo ===================================
 		rm -fv "$BACKUPDIR/weekly/$DB/${DB}_week.$REMW".*
 		echo
 			dbdump "$DB" "$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql"
-			compression "$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql"
 			BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql$SUFFIX"
 		echo ----------------------------------------------------------------------
 	
@@ -583,7 +609,6 @@ echo ===================================
 		rm -fv "$BACKUPDIR/daily/$DB"/*."$DOW".sql.*
 		echo
 			dbdump "$DB" "$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql"
-			compression "$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql"
 			BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql$SUFFIX"
 		echo ----------------------------------------------------------------------
 	fi
@@ -599,7 +624,6 @@ echo ===================================
 	if [ "$DOM" = "01" ]; then
 		echo Monthly full Backup of \( $MDBNAMES \)...
 			dbdump "$MDBNAMES" "$BACKUPDIR/monthly/$DATE.$M.all-databases.sql"
-			compression "$BACKUPDIR/monthly/$DATE.$M.all-databases.sql"
 			BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$DATE.$M.all-databases.sql$SUFFIX"
 		echo ----------------------------------------------------------------------
 	fi
@@ -619,7 +643,6 @@ echo ===================================
 		rm -fv "$BACKUPDIR/weekly/week.$REMW".*
 		echo
 			dbdump "$DBNAMES" "$BACKUPDIR/weekly/week.$W.$DATE.sql"
-			compression "$BACKUPDIR/weekly/week.$W.$DATE.sql"
 			BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/week.$W.$DATE.sql$SUFFIX"
 		echo ----------------------------------------------------------------------
 		
@@ -631,7 +654,6 @@ echo ===================================
 		rm -fv "$BACKUPDIR"/daily/*."$DOW.sql".*
 		echo
 			dbdump "$DBNAMES" "$BACKUPDIR/daily/$DATE.$DOW.sql"
-			compression "$BACKUPDIR/daily/$DATE.$DOW.sql"
 			BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DATE.$DOW.sql$SUFFIX"
 		echo ----------------------------------------------------------------------
 	fi
