X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=handlers%2Fdup;h=55667f6af63dab9f6fc1e353e703d31deea38d25;hb=1d3e3482bef095acc4e3d2ebd058037b7710001b;hp=955605d61ff7eff57238722e4940155d284d913c;hpb=19b4b83fbc2b4ba34a40b01321ed5c41672ad6ce;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/handlers/dup b/handlers/dup index 955605d..55667f6 100644 --- a/handlers/dup +++ b/handlers/dup @@ -3,11 +3,23 @@ # requires duplicity # -getconf password getconf options -getconf keep 60 +getconf testconnect yes +getconf nicelevel 0 + +setsection gpg +getconf password +getconf sign no +getconf encryptkey + +setsection source getconf include getconf exclude + +setsection dest +getconf keep 60 +getconf sshoptions +getconf bandwidthlimit 0 getconf desthost getconf destdir getconf destuser @@ -18,21 +30,43 @@ destdir=${destdir%/} [ "$password" != "" ] || fatal "No password specified" # see if we can login -debug "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'" -if [ ! $test ]; then - result=`ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1' 2>&1` +if [ "$testconnect" == "yes" ]; then + debug "ssh $sshoptions -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'" + if [ ! $test ]; then + result=`ssh $sshoptions -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1' 2>&1` if [ "$result" != "1" ]; then - fatal "Can't connect to $desthost as $destuser." + fatal "Can't connect to $desthost as $destuser." + else + debug "Connected to $desthost as $destuser successfully" fi + fi +fi + +### COMMAND-LINE MANGLING ### + +scpoptions="$sshoptions" +[ "$bandwidthlimit" == 0 ] || scpoptions="$scpoptions -l $bandwidthlimit" + +execstr="$options --no-print-statistics --scp-command 'scp $scpoptions' --ssh-command 'ssh $sshoptions' " + +if [ "$encryptkey" == "" ]; then + [ "$sign" != "yes" ] || fatal "encryptkey option must be set when signing." +else + execstr="${execstr}--encrypt-key $encryptkey " + [ "$sign" != "yes" ] || execstr="${execstr}--sign-key $encryptkey " fi -if [ "`echo $keep | tr -d 0-9`" == "" ]; then +if [ "$keep" != "yes" ]; then + if [ "`echo $keep | tr -d 0-9`" == "" ]; then keep="${keep}D" + fi + execstr="${execstr}--remove-older-than $keep " fi execstr_serverpart="scp://$destuser@$desthost/$destdir" execstr_clientpart="/" -execstr="$options --no-print-statistics --remove-older-than $keep " + +### SOURCE ### # excludes for i in $exclude; do @@ -46,6 +80,8 @@ for i in $include; do execstr="${execstr}--include $str " done +### EXECUTE ### + # exclude everything else, start with root #execstr="${execstr}--exclude '**' / " @@ -56,9 +92,10 @@ execstr=${execstr//\\*/\\\\\\*} debug "duplicity $execstr --exclude '**' / $execstr_serverpart" if [ ! $test ]; then - PASSPHRASE=$password - export PASSPHRASE - output=`duplicity $execstr --exclude '**' / $execstr_serverpart 2>&1` + output=`nice -n $nicelevel \ + su -c \ + "export PASSPHRASE=$password \ + && duplicity $execstr --exclude '**' / $execstr_serverpart 2>&1"` code=$? if [ "$code" == "0" ]; then debug $output