diff options
-rw-r--r-- | handlers/dup | 72 |
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 |