diff options
Diffstat (limited to 'handlers/rdiff')
| -rw-r--r-- | handlers/rdiff | 45 | 
1 files changed, 24 insertions, 21 deletions
| diff --git a/handlers/rdiff b/handlers/rdiff index 730e660..61eb7f5 100644 --- a/handlers/rdiff +++ b/handlers/rdiff @@ -4,11 +4,12 @@  #  getconf options +getconf testconnect yes +getconf nicelevel 0  setsection source  getconf type; sourcetype=$type  getconf label -getconf user root; sourceuser=$user  getconf keep 60  getconf include  getconf exclude @@ -24,29 +25,31 @@ getconf user; destuser=$user  getconf host; desthost=$host  [ "$destdir" != "" ] || fatal "Destination directory not set" -[ "$desttype" == "remote" ] || fatal "Only remote destinations are supported" -# see if we can login -debug "su $sourceuser -c \"ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'\"" -if [ ! $test ]; then -	result=`su $sourceuser -c "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'" 2>&1` -	if [ "$result" != "1" ]; then -		fatal "Can't connect to $desthost as $destuser." +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'` +		if echo $ret | grep "host is alive"; then +			debug "Connected to $desthost as $destuser successfully" +		else +			fatal "Can't connect to $desthost as $destuser." +		fi  	fi -fi - -# see that rdiff-backup has the same version as here -debug "su $sourceuser -c \"ssh $desthost -l $destuser '$RDIFFBACKUP -V'\"" -if [ ! $test ]; then -	remoteversion=`su $sourceuser -c "ssh $desthost -l $destuser '$RDIFFBACKUP -V'" 2>&1` +	# 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"`  	localversion=`$RDIFFBACKUP -V`  	if [ "$remoteversion" != "$localversion" ]; then  		fatal "rdiff-backup does not have the same version on this computer and the backup server."  	fi +	execstr_serverpart="$destuser@$desthost::$destdir/$label" +else +	execstr_serverpart="$destdir/$label"  fi -execstr_serverpart="$destuser@$desthost::$destdir/$label" -		  ### SOURCE ###  [ "$label" != "" ] || fatal "Source missing label" @@ -67,9 +70,9 @@ if [ "$desttype" == "remote" ]; then  fi  removestr="${removestr}${destdir}/${label}"; -debug "su $sourceuser -c '$removestr'" +debug "$removestr"  if [ ! $test ]; then -	output=`su $sourceuser -c "$removestr" 2>&1` +	output=`$removestr 2>&1`  	code=$?  	if [ "$code" == "0" ]; then  		debug $output @@ -81,7 +84,7 @@ if [ ! $test ]; then  fi  ## EXECUTE ## -	 +  execstr="$RDIFFBACKUP $options --print-statistics "  # TODO: order the includes and excludes @@ -104,9 +107,9 @@ execstr="${execstr}--exclude '/*' "  # include client-part and server-part  execstr="${execstr}$execstr_clientpart $execstr_serverpart" -debug "su $sourceuser -c '$execstr'" +debug "$execstr"  if [ ! $test ]; then -	output=`su $sourceuser -c "$execstr" 2>&1` +	output=`nice -n $nicelevel su -c "$execstr" 2>&1`  	code=$?  	if [ "$code" == "0" ]; then  		debug $output | 
