aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--handlers/dup72
1 files changed, 72 insertions, 0 deletions
diff --git a/handlers/dup b/handlers/dup
new file mode 100644
index 0000000..955605d
--- /dev/null
+++ b/handlers/dup
@@ -0,0 +1,72 @@
+#
+# duplicity script for backupninja
+# requires duplicity
+#
+
+getconf password
+getconf options
+getconf keep 60
+getconf include
+getconf exclude
+getconf desthost
+getconf destdir
+getconf destuser
+destdir=${destdir%/}
+
+[ "$destdir" != "" ] || fatal "Destination directory not set"
+[ "$include" != "" ] || fatal "No source includes specified"
+[ "$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 [ "$result" != "1" ]; then
+ fatal "Can't connect to $desthost as $destuser."
+ fi
+fi
+
+if [ "`echo $keep | tr -d 0-9`" == "" ]; then
+ keep="${keep}D"
+fi
+
+execstr_serverpart="scp://$destuser@$desthost/$destdir"
+execstr_clientpart="/"
+execstr="$options --no-print-statistics --remove-older-than $keep "
+
+# excludes
+for i in $exclude; do
+ str="${i//__star__/*}"
+ execstr="${execstr}--exclude $str "
+done
+
+# includes
+for i in $include; do
+ str="${i//__star__/*}"
+ execstr="${execstr}--include $str "
+done
+
+# exclude everything else, start with root
+#execstr="${execstr}--exclude '**' / "
+
+# include client-part and server-part
+#execstr="$execstr $execstr_serverpart"
+
+execstr=${execstr//\\*/\\\\\\*}
+
+debug "duplicity $execstr --exclude '**' / $execstr_serverpart"
+if [ ! $test ]; then
+ PASSPHRASE=$password
+ export PASSPHRASE
+ output=`duplicity $execstr --exclude '**' / $execstr_serverpart 2>&1`
+ code=$?
+ if [ "$code" == "0" ]; then
+ debug $output
+ info "Duplicity finished successfully."
+ else
+ warning $output
+ warning "Duplicity failed."
+ fi
+fi
+
+return 0