# 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
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 '*')
[ "$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"
### 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
# 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
# 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
getconf label
getconf keep 60
getconf include
+getconf vsnames all
getconf vsinclude
getconf exclude
### 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
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' "
# 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 '/*' "
# 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