diff --git a/examples/example.dup b/examples/example.dup
index 50d957291247e63ea0cd5d498ab8791610a078b4..e6a66a87e3a3e5107a790823eba0f657a20a69d3 100644
--- a/examples/example.dup
+++ b/examples/example.dup
@@ -87,15 +87,15 @@ include = /var/lib/dpkg/status-old
 # 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 '*'.
 
-# rdiff-backup specific comment, TO ADAPT
 # files to exclude from the backup
 # (supports globbing with '*')
 exclude = /home/*/.gnupg
diff --git a/examples/example.rdiff b/examples/example.rdiff
index 8878ad0a45328db5f8d9ed6e0943c2c59dbe0e86..198516c726cdc15339d4ede7c6b5d29dc3d29bc6 100644
--- a/examples/example.rdiff
+++ b/examples/example.rdiff
@@ -52,11 +52,21 @@ include = /usr/local/sbin
 include = /var/lib/dpkg/status
 include = /var/lib/dpkg/status-old
 
-# If vservers = yes in /etc/backupninja.conf then vsinclude
-# may be used. Any path specified in vsinclude is added to
-# the include list for each vserver on the system. e.g.
-# vsinclude = /home will backup /vservers/v1/home,
-# /vservers/v2/home, etc.
+# If vservers = yes in /etc/backupninja.conf then the following variables can
+# be used:
+# vsnames = all | <vserver1> <vserver2> ... (default = all)
+# vsinclude = <path>
+# vsinclude = <path>
+# ...
+# Any path specified in vsinclude is added to the include list for each vserver
+# 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 '*'.
 
 # files to exclude from the backup
 # (supports globbing with '*')
diff --git a/handlers/dup b/handlers/dup
index d32fcf26851890112f4a36f64e164e18e3850ca0..6918702634d3d87a734aad1335e1d2ec2e16f3b3 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 f2413344f00fbb733a66808a00a377167730c330..490914efd1eadad81aa43a7772291b6a79a1e586 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 dc985019fa6df2ae0b44420199f13aa44cb9cdaf..adc4b5d8e6a6377545d4602cc0ae27e66295e71d 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 2538dd8fcb9282f9f5695acd30dfdd73cb7a758d..703444c277986ad8d73dbedfd3785bd1d9aeb9d2 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