# # 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