diff options
| author | intrigeri <intrigeri@boum.org> | 2006-01-19 21:58:38 +0000 | 
|---|---|---|
| committer | intrigeri <intrigeri@boum.org> | 2006-01-19 21:58:38 +0000 | 
| commit | 51d938cd68c7a2eeaca73de9e14c6c34efceca88 (patch) | |
| tree | 01b9ec9937af45650a9a48a024d655af11bb9257 /handlers | |
| parent | 8bc9312e15bf0284b3767e1791c0de3522f410f2 (diff) | |
| download | backupninja-51d938cd68c7a2eeaca73de9e14c6c34efceca88.tar.gz backupninja-51d938cd68c7a2eeaca73de9e14c6c34efceca88.tar.bz2 | |
- dup & rdiff handlers: finally, a real and well tested fix for the globbing bug
- rdiff: it's now possible to choose exactly which vservers should be
         backed-up, as it already was with duplicity handler, with the
	 "vsnames" configuration setting
Diffstat (limited to 'handlers')
| -rw-r--r-- | handlers/dup | 13 | ||||
| -rw-r--r-- | handlers/dup.helper | 3 | ||||
| -rw-r--r-- | handlers/rdiff | 33 | ||||
| -rw-r--r-- | handlers/rdiff.helper | 3 | 
4 files changed, 38 insertions, 14 deletions
| diff --git a/handlers/dup b/handlers/dup index d32fcf2..6918702 100644 --- a/handlers/dup +++ b/handlers/dup @@ -34,8 +34,9 @@ destdir=${destdir%/}  [ "$include" != "" ] || fatal "No source includes specified"  ### vservers stuff ### -local usevserver=no +  # 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" @@ -113,14 +114,16 @@ execstr_clientpart="/"  ### SOURCE ### +set -o noglob +  # excludes -for i in "$exclude"; do +for i in $exclude; do  	str="${i//__star__/*}"  	execstr="${execstr}--exclude '$str' "  done  # includes  -for i in "$include"; do +for i in $include; do  	str="${i//__star__/*}"  	execstr="${execstr}--include '$str' "  done @@ -128,13 +131,15 @@ done  # vsincludes  if [ $usevserver = yes ]; then      for vserver in $vsnames; do -	for vi in "$vsinclude"; do +	for vi in $vsinclude; do  	    str="${vi//__star__/*}"  	    execstr="${execstr}--include '$VROOTDIR/$vserver$str' "  	done      done  fi +set +o noglob +  ### EXECUTE ###  # exclude everything else, start with root diff --git a/handlers/dup.helper b/handlers/dup.helper index f241334..490914e 100644 --- a/handlers/dup.helper +++ b/handlers/dup.helper @@ -354,13 +354,14 @@ EOF  # vsinclude = <path>  # ...  # Any path specified in vsinclude is added to the include list for each vserver -# listed in vsnames (or all if vsnames = all). +# listed in vsnames (or all if vsnames = all, which is the default).  #  # For example, vsinclude = /home will backup the /home directory in every  # vserver listed in vsnames. If you have 'vsnames = foo bar baz', this  # vsinclude will add to the include list /vservers/foo/home, /vservers/bar/home  # and /vservers/baz/home.  # Vservers paths are derived from $VROOTDIR. +# vsinclude supports globbing with '*'.  EOF diff --git a/handlers/rdiff b/handlers/rdiff index dc98501..adc4b5d 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,11 +93,23 @@ check_consistency "destination" "$type" "$user" "$host"  ### CHECK CONFIG ### -# See if vservers are configured +# If vservers are configured, check that the ones listed in $vsnames do exist.  local usevserver=no -if [ $vservers_are_available = yes -a -n "$vsinclude" ]; then -   info "vserver method enabled" -   usevserver=yes +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' +   [ -z "$vsnames" ] || warning 'vservers support disabled in backupninja.conf, vsnames configuration line will be ignored'     fi  # check the connection at the source and destination @@ -157,14 +170,16 @@ fi  execstr="$RDIFFBACKUP $options --print-statistics " +set -o noglob +  # TODO: order the includes and excludes  # excludes -for i in "$exclude"; do +for i in $exclude; do  	str="${i//__star__/*}"  	execstr="${execstr}--exclude '$str' "  done  # includes  -for i in "$include"; do +for i in $include; do  	[ "$i" != "/" ] || fatal "Sorry, you cannot use 'include = /'"  	str="${i//__star__/*}"  	execstr="${execstr}--include '$str' " @@ -172,14 +187,16 @@ done  # vsinclude  if [ $usevserver = yes ]; then -   for vserver in $found_vservers; do -      for vi in "$vsinclude"; do +   for vserver in $vsnames; do +      for vi in $vsinclude; do  	 str="${vi//__star__/*}"  	 execstr="${execstr}--include '$VROOTDIR/$vserver$str' "        done     done  fi +set +o noglob +  # exclude everything else  execstr="${execstr}--exclude '/*' " diff --git a/handlers/rdiff.helper b/handlers/rdiff.helper index 2538dd8..703444c 100644 --- a/handlers/rdiff.helper +++ b/handlers/rdiff.helper @@ -289,13 +289,14 @@ EOF  # vsinclude = <path>  # ...  # Any path specified in vsinclude is added to the include list for each vserver -# listed in vsnames (or all if vsnames = all). +# listed in vsnames (or all if vsnames = all, which is the default).  #  # For example, vsinclude = /home will backup the /home directory in every  # vserver listed in vsnames. If you have 'vsnames = foo bar baz', this  # vsinclude will add to the include list /vservers/foo/home, /vservers/bar/home  # and /vservers/baz/home.  # Vservers paths are derived from $VROOTDIR. +# vsinclude supports globbing with '*'.  EOF        set -o noglob | 
