X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=handlers%2Frdiff;h=a80b2c53c4f2fabe787c592a3e76e6ae6fdb68d5;hb=a031bc2d53eb90b6b4255d344967ec39a9f3ea26;hp=209606d71de6f22d2445f746ad1e1344f6efe43e;hpb=0d606253af6ecb8ede07b0991a1f295fb70e7e65;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/handlers/rdiff b/handlers/rdiff index 209606d..a80b2c5 100644 --- a/handlers/rdiff +++ b/handlers/rdiff @@ -78,6 +78,7 @@ check_consistency "source" "$type" "$user" "$host" getconf label getconf keep 60 getconf include +getconf vsnames all getconf vsinclude getconf exclude @@ -92,16 +93,22 @@ check_consistency "destination" "$type" "$user" "$host" ### CHECK CONFIG ### -# See if vservers are configured -if [ "$vservers" = "yes" ] -then - if [ ! -d $VROOTDIR ] - then - fatal "vservers enabled, but $VROOTDIR does not exist!" - else - info "vserver method enabled" - usevserver=1 - fi +# If vservers are configured, check that the ones listed in $vsnames do exist. +local usevserver=no +if [ $vservers_are_available = yes ]; then + if [ "$vsnames" = all ]; then + vsnames="$found_vservers" + else + if ! vservers_exist "$vsnames" ; then + fatal "At least one of the vservers listed in vsnames ($vsnames) does not exist." + fi + fi + if [ -n "$vsinclude" ]; then + info "Using vservers '$vsnames'" + usevserver=yes + fi +else + [ -z "$vsinclude" ] || warning 'vservers support disabled in backupninja.conf, vsincludes configuration lines will be ignored' fi # check the connection at the source and destination @@ -119,7 +126,6 @@ fi # source specific checks [ "$include" != "" -o "$vsinclude" != "" ] || fatal "No source includes specified" -#TODO should I test for vsinclude if usevservers=1? case $sourcetype in remote ) execstr_sourcepart="$sourceuser@$sourcehost::/" ;; local ) execstr_sourcepart="/" ;; @@ -163,29 +169,36 @@ fi execstr="$RDIFFBACKUP $options --print-statistics " +set -o noglob + # TODO: order the includes and excludes # excludes for i in $exclude; do str="${i//__star__/*}" + i=`readlink -f ${i#}` execstr="${execstr}--exclude '$str' " done # includes for i in $include; do [ "$i" != "/" ] || fatal "Sorry, you cannot use 'include = /'" str="${i//__star__/*}" + i=`readlink -f $i` execstr="${execstr}--include '$str' " done # vsinclude -if [ $usevserver ]; then - for vserver in `ls $VROOTDIR|grep -v lost+found`; do - for vi in $vsinclude; do - str="${vi//__star__/*}" - execstr="${execstr}--include '$VROOTDIR/$vserver$str' " - done - done +if [ $usevserver = yes ]; then + for vserver in $vsnames; do + for vi in $vsinclude; do + i=`readlink -f $VROOTDIR/$vserver$vi` + str="${i//__star__/*}" + execstr="${execstr}--include '$str' " + done + done fi +set +o noglob + # exclude everything else execstr="${execstr}--exclude '/*' "