dup: added option --force to cleanup and remove-older-than commands, else they actual...
[matthijs/upstream/backupninja.git] / handlers / rdiff.in
index 46cae4981d0277e980d2b6671e32481e2aba4d67..0f934299edd0ebc86fea6dfa286079bad4906f91 100644 (file)
@@ -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 | cut -d. -f1,2`
+               echo `$RDIFFBACKUP -V`
        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 | cut -d. -f1,2"`
+               echo `ssh $sshoptions $host -l $user "$RDIFFBACKUP -V | grep rdiff-backup"`
        fi
 }
 
@@ -77,6 +77,7 @@ getconf options
 getconf testconnect yes
 getconf nicelevel 0
 getconf bwlimit
+getconf ignore_version no
 
 setsection source
 getconf type; sourcetype=$type
@@ -100,6 +101,10 @@ getconf host; desthost=$host
 getconf sshoptions
 check_consistency "destination" "$type" "$user" "$host"
 
+if [ -n "$sshoptions" ] && echo $options | grep -qv "remote-schema"; then
+       options="$options --remote-schema 'ssh -C $sshoptions %s rdiff-backup --server'"
+fi
+
 ### CHECK CONFIG ###
 
 # If vservers are configured, check that the ones listed in $vsnames do exist.
@@ -127,15 +132,16 @@ if [ "$testconnect" = "yes" ] || [ "${test}" -eq 1 ]; then
        test_connection $destuser $desthost
 fi
 
-# see that rdiff-backup has the same version at the source and destination
-sourceversion=`get_version $sourceuser $sourcehost`
-destversion=`get_version $destuser $desthost`
-if [ "$sourceversion" != "$destversion" ]; then
-       fatal "rdiff-backup does not have the same version at the source and at the destination."
+if [ "$ignore_version" != "yes" ]; then
+       # see that rdiff-backup has the same version at the source and destination
+       sourceversion=`get_version $sourceuser $sourcehost`
+       destversion=`get_version $destuser $desthost`
+       if [ "$sourceversion" != "$destversion" ]; then
+               fatal "rdiff-backup does not have the same version at the source and at the destination."
+       fi
 fi
 
 # source specific checks
-[ "$include" != "" -o "$vsinclude" != "" ] || fatal "No source includes specified"
 case $sourcetype in 
        remote ) execstr_sourcepart="$sourceuser@$sourcehost::/" ;;
        local  ) execstr_sourcepart="/" ;;
@@ -231,7 +237,7 @@ fi
 set +o noglob
 
 # exclude everything else
-execstr="${execstr}--exclude '/*' "
+[ "$include" != "" -o "$vsinclude" != "" ] && execstr="${execstr}--exclude '/*' "
                
 # include client-part and server-part
 execstr="${execstr}$execstr_sourcepart $execstr_destpart"