aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2012-01-29 14:39:39 +0100
committerintrigeri <intrigeri@boum.org>2012-01-29 15:09:37 +0100
commit357a17b155f769f0bf290f3a11e2d84aa4350a60 (patch)
treeb35d8f93dfd345b36eaa719fb3743ebc87b00a15
parent0a0fbb46baa1fd5e6bb68c9e3f9f0b28dfa17e15 (diff)
downloadbackupninja-357a17b155f769f0bf290f3a11e2d84aa4350a60.tar.gz
backupninja-357a17b155f769f0bf290f3a11e2d84aa4350a60.tar.bz2
Use --ssh-options with dup >= 0.6.17.
... and warn about unsupported options.
-rw-r--r--examples/example.dup6
-rw-r--r--handlers/dup.helper.in19
-rw-r--r--handlers/dup.in22
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 <SSHOPTION>"
## 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 <SSHOPTION>"
-#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 <SSHOPTION>"
+## 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