diff --git a/ChangeLog b/ChangeLog
index 66bc1e7df3a2658d7faf30f50c2181cec3ac01f6..e3c860849b40acdfee51a97dd612cbe3f2d4dcb3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
 version 0.9.8 -- UNRELEASED
+    backupninja changes
+	 . Added GZIP_OPTS option, defaulting to --rsyncable, so that this
+	   option can be disabled on systems that don't support it. This
+	   also allows to use another compression program, such as pbzip2
+	   on SMP machines (Closes Roundup bug #2405)
     handler changes
 	sys:
 	 . Only run mdadm if RAID devices actually exist (Closes: #572450)
diff --git a/etc/backupninja.conf.in b/etc/backupninja.conf.in
index de1fbf3b553b92a9ff2634f97667a2e79c679c69..dee9fff6b0376305da03784500f47be55de0a8b7 100644
--- a/etc/backupninja.conf.in
+++ b/etc/backupninja.conf.in
@@ -86,6 +86,7 @@ vservers = no
 # PGSQLDUMP=/usr/bin/pg_dump
 # PGSQLDUMPALL=/usr/bin/pg_dumpall
 # GZIP=/bin/gzip
+# GZIP_OPTS='--rsyncable'
 # RSYNC=/usr/bin/rsync
 # VSERVERINFO=/usr/sbin/vserver-info
 # VSERVER=/usr/sbin/vserver
diff --git a/handlers/ldap.in b/handlers/ldap.in
index fda24d08878304f044821d08c5608cfde171402f..83307eedd3992e1f4d056dd9dfe0a90e66d732cc 100644
--- a/handlers/ldap.in
+++ b/handlers/ldap.in
@@ -86,7 +86,7 @@ if [ "$ldif" == "yes" ]; then
          fi
 
          if [ "$compress" == "yes" ]; then
-            execstr="$execstr | $GZIP --rsyncable > $dumpdir/$dbsuffix.ldif.gz"
+            execstr="$execstr | $GZIP $GZIP_OPTS > $dumpdir/$dbsuffix.ldif.gz"
          else
             execstr="$execstr > $dumpdir/$dbsuffix.ldif"
          fi
diff --git a/handlers/mysql.in b/handlers/mysql.in
index 3488c511becd6ecd8f247d4f2f476f9303d2fcbd..4dece247d1b9265c59343100688d2c5955c4a56d 100644
--- a/handlers/mysql.in
+++ b/handlers/mysql.in
@@ -279,7 +279,7 @@ then
             fatal "mysqld doesn't appear to be running!"
          fi
          if [ "$compress" == "yes" ]; then
-            execstr="$VSERVER $vsname exec $DUMP | $GZIP --rsyncable > '$vroot$dumpdir/${db}.sql.gz'"
+            execstr="$VSERVER $vsname exec $DUMP | $GZIP $GZIP_OPTS > '$vroot$dumpdir/${db}.sql.gz'"
          else
             execstr="$VSERVER $vsname exec $DUMP -r '$vroot$dumpdir/${db}.sql'"
          fi
@@ -290,7 +290,7 @@ then
             fatal "mysqld doesn't appear to be running!"
          fi
          if [ "$compress" == "yes" ]; then
-            execstr="$DUMP | $GZIP --rsyncable > '$dumpdir/${db}.sql.gz'"
+            execstr="$DUMP | $GZIP $GZIP_OPTS > '$dumpdir/${db}.sql.gz'"
          else
             execstr="$DUMP -r '$dumpdir/${db}.sql'"
          fi
diff --git a/handlers/pgsql.in b/handlers/pgsql.in
index 77a73fee98ed7f4f7d90ceff53bb56743b0501f0..0b7badfdecb51c1c122c71f04a1ecf807a304f89 100644
--- a/handlers/pgsql.in
+++ b/handlers/pgsql.in
@@ -75,13 +75,13 @@ chmod 700 $vroot$backupdir
 if [ "$databases" == "all" ]; then
    if [ $usevserver = yes ]; then
       if [ "$compress" == "yes" ]; then
-         execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP --rsyncable > '$backupdir/${vsname}.sql.gz'\""
+         execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP $GZIP_OPTS > '$backupdir/${vsname}.sql.gz'\""
       else
          execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$PGSQLDUMPALL > '$backupdir/${vsname}.sql'\""
       fi
    else
       if [ "$compress" == "yes" ]; then
-         execstr="su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP --rsyncable > '$backupdir/${localhost}-all.sql.gz'\""
+         execstr="su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP $GZIP_OPTS > '$backupdir/${localhost}-all.sql.gz'\""
       else
          execstr="su - $PGSQLUSER -c \"$PGSQLDUMPALL > '$backupdir/${localhost}-all.sql'\""
       fi
@@ -104,13 +104,13 @@ else
    for db in $databases; do
       if [ $usevserver = yes ]; then
          if [ "$compress" == "yes" ]; then
-            execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMP $db | $GZIP --rsyncable > '$backupdir/${db}.sql.gz'\""
+            execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMP $db | $GZIP $GZIP_OPTS > '$backupdir/${db}.sql.gz'\""
          else
             execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$PGSQLDUMP $db | > '$backupdir/${db}.sql'\""
          fi
       else
          if [ "$compress" == "yes" ]; then
-            execstr="su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMP $db | $GZIP --rsyncable > '$backupdir/${db}.sql.gz'\""
+            execstr="su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMP $db | $GZIP $GZIP_OPTS > '$backupdir/${db}.sql.gz'\""
          else
             execstr="su - $PGSQLUSER -c \"$PGSQLDUMP $db > '$backupdir/${db}.sql'\""
          fi
diff --git a/src/backupninja.in b/src/backupninja.in
index e8a820ff562aa43b21f2bce94526b7d726a0afcf..b397a142069ab5ca9f641f65800c9427a86d871a 100755
--- a/src/backupninja.in
+++ b/src/backupninja.in
@@ -480,6 +480,7 @@ getconf PGSQLDUMP /usr/bin/pg_dump
 getconf PGSQLDUMPALL /usr/bin/pg_dumpall
 getconf PGSQLUSER postgres
 getconf GZIP /bin/gzip
+getconf GZIP_OPTS --rsyncable
 getconf RSYNC /usr/bin/rsync
 getconf admingroup root