X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=handlers%2Frdiff;h=bec59ff69a8ff065be9a5ad1ab264650d7292ba3;hb=91f3eb464817461dea895b180f7f79d67289ff21;hp=61eb7f5c7e05d5af6cfa82ae3303909269779f46;hpb=c7e96acc455c3b5c74f97e812072e1a55664adce;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/handlers/rdiff b/handlers/rdiff index 61eb7f5..bec59ff 100644 --- a/handlers/rdiff +++ b/handlers/rdiff @@ -12,6 +12,7 @@ getconf type; sourcetype=$type getconf label getconf keep 60 getconf include +getconf vsinclude getconf exclude ### DESTINATION ### @@ -24,14 +25,26 @@ getconf type; desttype=$type getconf user; destuser=$user getconf host; desthost=$host +# See if vservers are configured +if [ "$vservers" = "yes" ] +then + if [ ! -d $VROOTDIR ] + then + fatal "vservers enabled, but $VROOTDIR does not exist!" + else + info "vserver method enabled" + usevserver=1 + fi +fi + [ "$destdir" != "" ] || fatal "Destination directory not set" if [ "$desttype" == "remote" ]; then # see if we can login if [ "$testconnect" == "yes" ]; then hostalive=0 - debug "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'" - ret=`ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n host is alive'` + debug "ssh -o -o PreferredAuthentications=publickey $desthost -l $destuser 'echo -n 1'" + ret=`ssh -o -o PreferredAuthentications=publickey $desthost -l $destuser 'echo -n host is alive'` if echo $ret | grep "host is alive"; then debug "Connected to $desthost as $destuser successfully" else @@ -39,8 +52,8 @@ if [ "$desttype" == "remote" ]; then fi fi # see that rdiff-backup has the same version as here - debug "ssh $desthost -l $destuser '$RDIFFBACKUP -V'\"" - remoteversion=`ssh $desthost -l $destuser "$RDIFFBACKUP -V | grep rdiff-backup"` + debug "ssh -o PreferredAuthentications=publickey $desthost -l $destuser '$RDIFFBACKUP -V'\"" + remoteversion=`ssh -o PreferredAuthentications=publickey $desthost -l $destuser "$RDIFFBACKUP -V | grep rdiff-backup"` localversion=`$RDIFFBACKUP -V` if [ "$remoteversion" != "$localversion" ]; then fatal "rdiff-backup does not have the same version on this computer and the backup server." @@ -54,7 +67,8 @@ fi [ "$label" != "" ] || fatal "Source missing label" [ "$sourcetype" == "local" ] || fatal "Only local source type supported" -[ "$include" != "" ] || fatal "No source includes specified" +[ "$include" != "" -o "$vsinclude" != "" ] || fatal "No source includes specified" +#TODO should I test for vsinclude if usevservers=1? execstr_clientpart="/" @@ -101,6 +115,19 @@ for i in $include; do execstr="${execstr}--include '$str' " done +# vsinclude +if [ $usevserver ] +then + for vserver in `ls $VROOTDIR|grep -v lost+found` + do + for vi in $vsinclude + do + str="${vi//__star__/*}" + execstr="${execstr}--include '$VROOTDIR/$vserver$str' " + done + done +fi + # exclude everything else execstr="${execstr}--exclude '/*' "