dup: use duplicity's --extra-clean option when necessary
[matthijs/upstream/backupninja.git] / handlers / dup.in
index 2f55b9c07668ac0b63680f9599b9d96f96032149..c8dfcba6480340122769725e0d23942f1b4ded04 100644 (file)
@@ -26,6 +26,8 @@ setsection dest
 getconf incremental yes
 getconf keep 60
 getconf desturl
+getconf awsaccesskeyid
+getconf awssecretaccesskey
 getconf sshoptions
 getconf bandwidthlimit 0
 getconf desthost
@@ -38,6 +40,9 @@ destdir=${destdir%/}
 [ -n "$desturl" -o -n "$destdir" ]  || fatal "The destination directory (destdir) must be set when desturl is not used."
 [ -n "$include" -o -n "$vsinclude" ]  || fatal "No source includes specified"
 [ -n "$password" ] || fatal "The password option must be set."
+if [ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "s3+http" ]; then
+   [ -n "$awsaccesskeyid" -a -n "$awssecretaccesskey" ]  || fatal "AWS access keys must be set for S3 backups."
+fi
 
 ### VServers
 # If vservers are configured, check that the ones listed in $vsnames do exist.
@@ -160,6 +165,11 @@ if [ "$incremental" == "no" ]; then
    fi
 fi
 
+### Cleanup options
+if [ "$duplicity_major" -ge 0 -a "$duplicity_minor" -ge 6 -a "$duplicity_sub" -ge 1 ]; then
+   execstr_options="${execstr_options} --extra-clean"
+fi
+
 ### Temporary directory
 precmd=
 if [ -n "$tmpdir" ]; then
@@ -227,6 +237,12 @@ set +o noglob
 
 execstr_source=${execstr_source//\\*/\\\\\\*}
 
+### If desturl is an S3 URL export the AWS environment variables
+if [ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "s3+http" ]; then
+   export AWS_ACCESS_KEY_ID="$awsaccesskeyid"
+   export AWS_SECRET_ACCESS_KEY="$awssecretaccesskey"
+fi
+
 ### Cleanup commands (duplicity >= 0.4.4)
 
 # cleanup