aboutsummaryrefslogtreecommitdiff
path: root/handlers/rdiff
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2006-01-19 21:58:38 +0000
committerintrigeri <intrigeri@boum.org>2006-01-19 21:58:38 +0000
commit51d938cd68c7a2eeaca73de9e14c6c34efceca88 (patch)
tree01b9ec9937af45650a9a48a024d655af11bb9257 /handlers/rdiff
parent8bc9312e15bf0284b3767e1791c0de3522f410f2 (diff)
downloadbackupninja-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/rdiff')
-rw-r--r--handlers/rdiff33
1 files changed, 25 insertions, 8 deletions
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 '/*' "