From ea468148c55ce56e0c106f7e98ed249f8ffb388c Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Fri, 15 Dec 2006 23:13:47 +0000 Subject: [PATCH] Add Jamie McClelland's cstream patches --- AUTHORS | 4 ++-- etc/backupninja.conf.in | 1 + examples/example.rdiff | 7 +++++++ handlers/rdiff | 21 +++++++++++++++++++++ src/backupninja.in | 1 + 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index fd30f8e..03a9de4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -19,5 +19,5 @@ Daniel.Bonniot@inria.fr Brad Fritz -- trac patch garcondumonde@riseup.net Martin Krafft madduck@debian.org -- admingroup patch -Anarcat - +Anarcat -- lotsa patches +Jamie McClelland - cstream patches diff --git a/etc/backupninja.conf.in b/etc/backupninja.conf.in index 951a8ca..090561f 100644 --- a/etc/backupninja.conf.in +++ b/etc/backupninja.conf.in @@ -62,6 +62,7 @@ vservers = no # SLAPCAT=/usr/sbin/slapcat # LDAPSEARCH=/usr/bin/ldapsearch # RDIFFBACKUP=/usr/bin/rdiff-backup +# CSTREAM=/usr/bin/cstream # MYSQL=/usr/bin/mysql # MYSQLHOTCOPY=/usr/bin/mysqlhotcopy # MYSQLDUMP=/usr/bin/mysqldump diff --git a/examples/example.rdiff b/examples/example.rdiff index 25cd26e..5ad700b 100644 --- a/examples/example.rdiff +++ b/examples/example.rdiff @@ -13,6 +13,13 @@ ## default is yes. set to no to skip the test if the remote host is alive # testconnect = no +## default is not to limit bandwidth. +## set to a number in bytes/second to limit bandwidth usage. Use a negative +## number to set a limit that will never be exceeded, or a positive number +## to set a target average bandwidth use. cstream is required. See cstream's +## -t option for more information. 62500 bytes = 500 Kb (.5 Mb) +# bwlimit = 62500 + ###################################################### ## source section ## (where the files to be backed up are coming from) diff --git a/handlers/rdiff b/handlers/rdiff index bdc1cbd..5561435 100644 --- a/handlers/rdiff +++ b/handlers/rdiff @@ -64,11 +64,19 @@ function check_consistency() { fi } +function check_cstream() { + local cstream=$1 + if [ ! -x $cstream ]; then + fatal "Can't find your cstream binary (trying: $cstream). If you use bwlimit you must have cstream installed." + fi +} + ### GET CONFIG ### getconf options getconf testconnect yes getconf nicelevel 0 +getconf bwlimit setsection source getconf type; sourcetype=$type @@ -167,6 +175,19 @@ if [ $test = 0 ]; then fi fi +# Add cstream + +if [ ! -z $bwlimit ]; then + check_cstream $CSTREAM; + if [ "$desttype" = "remote" ]; then + RDIFFBACKUP="$RDIFFBACKUP --remote-schema 'cstream -t $bwlimit | ssh %s \''rdiff-backup --server\'''" + elif [ "$sourcetype" = "remote" ]; then + RDIFFBACKUP="$RDIFFBACKUP --remote-schema 'ssh %s \''rdiff-backup --server\'' | cstream -t $bwlimit'" + else + fatal "You specified a bandwidth limit but neither your source nor destination types are remote." + fi +fi + ### EXECUTE ### execstr="$RDIFFBACKUP $options --print-statistics " diff --git a/src/backupninja.in b/src/backupninja.in index 7430176..6295198 100755 --- a/src/backupninja.in +++ b/src/backupninja.in @@ -445,6 +445,7 @@ getconf usecolors "yes" getconf SLAPCAT /usr/sbin/slapcat getconf LDAPSEARCH /usr/bin/ldapsearch getconf RDIFFBACKUP /usr/bin/rdiff-backup +getconf CSTREAM=/usr/bin/cstream getconf MYSQLADMIN /usr/bin/mysqladmin getconf MYSQL /usr/bin/mysql getconf MYSQLHOTCOPY /usr/bin/mysqlhotcopy -- 2.30.2