X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fbackupninja.git;a=blobdiff_plain;f=handlers%2Frdiff;h=46cae4981d0277e980d2b6671e32481e2aba4d67;hp=bdc1cbd25ddc7eb3b4916eea96794bfd57873db1;hb=be75e4e6c536882c14db9a41c61585e7a9c045f6;hpb=d395ae94a5657afcc878adcd851d8e8c53df98de diff --git a/handlers/rdiff b/handlers/rdiff index bdc1cbd..46cae49 100644 --- a/handlers/rdiff +++ b/handlers/rdiff @@ -32,12 +32,12 @@ function get_version() { # if user or host is missing, returns the local version. if [ "$#" -lt 2 ]; then debug "$RDIFFBACKUP -V" - echo `$RDIFFBACKUP -V` + echo `$RDIFFBACKUP -V | cut -d. -f1,2` else local user=$1 local host=$2 debug "ssh $sshoptions $host -l $user '$RDIFFBACKUP -V'" - echo `ssh $sshoptions $host -l $user "$RDIFFBACKUP -V | grep rdiff-backup"` + echo `ssh $sshoptions $host -l $user "$RDIFFBACKUP -V | grep rdiff-backup | cut -d. -f1,2"` fi } @@ -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 @@ -144,26 +152,43 @@ esac ### REMOVE OLD BACKUPS ### -if [ "`echo $keep | tr -d 0-9`" == "" ]; then +if [ "$keep" != yes ]; then + + if [ "`echo $keep | tr -d 0-9`" == "" ]; then # add D if no other date unit is specified - keep="${keep}D" -fi + keep="${keep}D" + fi + + removestr="$RDIFFBACKUP $options --force --remove-older-than $keep " + if [ "$desttype" == "remote" ]; then + removestr="${removestr}${destuser}@${desthost}::" + fi + removestr="${removestr}${destdir}/${label}"; + + debug "$removestr" + if [ $test = 0 ]; then + output="`su -c "$removestr" 2>&1`" + if [ $? = 0 ]; then + debug $output + info "Removing backups older than $keep days succeeded." + else + warning $output + warning "Failed removing backups older than $keep." + fi + fi -removestr="$RDIFFBACKUP $options --force --remove-older-than $keep " -if [ "$desttype" == "remote" ]; then - removestr="${removestr}${destuser}@${desthost}::" fi -removestr="${removestr}${destdir}/${label}"; -debug "$removestr" -if [ $test = 0 ]; then - output="`su -c "$removestr" 2>&1`" - if [ $? = 0 ]; then - debug $output - info "Removing backups older than $keep days succeeded." +# 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 - warning $output - warning "Failed removing backups older than $keep." + fatal "You specified a bandwidth limit but neither your source nor destination types are remote." fi fi