greatly improved the rdiff wizard. added default option to menu in easydialog.
[matthijs/upstream/backupninja.git] / handlers / rdiff
index 61eb7f5c7e05d5af6cfa82ae3303909269779f46..bec59ff69a8ff065be9a5ad1ab264650d7292ba3 100644 (file)
@@ -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 '/*' "