From 357a17b155f769f0bf290f3a11e2d84aa4350a60 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Sun, 29 Jan 2012 14:39:39 +0100 Subject: Use --ssh-options with dup >= 0.6.17. ... and warn about unsupported options. --- examples/example.dup | 6 ++++++ handlers/dup.helper.in | 19 ++++++++++++++----- handlers/dup.in | 22 ++++++++++++++++------ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/examples/example.dup b/examples/example.dup index 77bda83..55ac565 100644 --- a/examples/example.dup +++ b/examples/example.dup @@ -217,12 +217,18 @@ exclude = /var/cache/backupninja/duplicity ## Default: # bandwidthlimit = 0 +## duplicity < 0.6.17 +## ------------------ ## passed directly to ssh, scp (and sftp in duplicity >=0.4.2) ## warning: sftp does not support all scp options, especially -i; as ## a workaround, you can use "-o " ## an example setting would be: ## sshoptions = -o IdentityFile=/root/.ssh/id_rsa_duplicity ## +## duplicity >= 0.6.17 +## ------------------ +## supports only "-o IdentityFile=..." +## ## Default: # sshoptions = diff --git a/handlers/dup.helper.in b/handlers/dup.helper.in index ba2850f..ea794c9 100644 --- a/handlers/dup.helper.in +++ b/handlers/dup.helper.in @@ -473,11 +473,20 @@ keepincroffulls = $dup_keepincroffulls #bandwidthlimit = 128 bandwidthlimit = $dup_bandwidth -# passed directly to ssh, scp (and sftp in duplicity >=0.4.2) -# warning: sftp does not support all scp options, especially -i; as -# a workaround, you can use "-o " -#sshoptions = -o IdentityFile=/root/.ssh/id_rsa_duplicity -sshoptions = $dup_sshoptions +## duplicity < 0.6.17 +## ------------------ +## passed directly to ssh, scp (and sftp in duplicity >=0.4.2) +## warning: sftp does not support all scp options, especially -i; as +## a workaround, you can use "-o " +## an example setting would be: +## sshoptions = -o IdentityFile=/root/.ssh/id_rsa_duplicity +## +## duplicity >= 0.6.17 +## ------------------ +## supports only "-o IdentityFile=..." +## +## Default: +# sshoptions = # put the backups under this destination directory # if using 'desturl' above, this must not be set diff --git a/handlers/dup.in b/handlers/dup.in index a3684c8..b358406 100644 --- a/handlers/dup.in +++ b/handlers/dup.in @@ -114,13 +114,23 @@ duplicity_minor="`echo $duplicity_version | @AWK@ -F '.' '{print $2}'`" duplicity_sub="`echo $duplicity_version | @AWK@ -F '.' '{print $3}'`" ### ssh/scp/sftp options (duplicity < 0.4.3 is unsupported) -scpoptions="$sshoptions" -if [ "$bandwidthlimit" != 0 ]; then - [ -z "$desturl" ] || warning 'The bandwidthlimit option is not used when desturl is set.' - scpoptions="$scpoptions -l $bandwidthlimit" +## duplicity >= 0.6.17 : paramiko backend +if [ "$duplicity_major" -ge 0 -a "$duplicity_minor" -ge 6 -a "$duplicity_sub" -ge 17 ]; then + if [ -n "$sshoptions" ]; then + echo "$sshoptions" | grep -Eqs '^-o[[:space:]]*IdentityFile=[^ ]+$' \ + || warning 'duplicity >= 0.6.17 only supports the IdentityFile SSH option' + fi + execstr_options="${execstr_options} --ssh-options '$sshoptions'" +## duplicity < 0.6.17 : scp/sftp backend +else + scpoptions="$sshoptions" + if [ "$bandwidthlimit" != 0 ]; then + [ -z "$desturl" ] || warning 'The bandwidthlimit option is not used when desturl is set.' + scpoptions="$scpoptions -l $bandwidthlimit" + fi + sftpoptions="$sshoptions" + execstr_options="${execstr_options} --scp-command 'scp $scpoptions' --sftp-command 'sftp $sftpoptions'" fi -sftpoptions="$sshoptions" -execstr_options="${execstr_options} --scp-command 'scp $scpoptions' --sftp-command 'sftp $sftpoptions'" ### Symmetric or asymmetric (public/private key pair) encryption if [ -n "$encryptkey" ]; then -- cgit v1.2.3