]> git.llucax.com Git - software/bacap.git/commitdiff
Allow config options on a per host basis
authorRodrigo Campos <rodrigo@sdfg.com.ar>
Mon, 12 Jul 2010 16:26:10 +0000 (13:26 -0300)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 12 Jul 2010 16:32:42 +0000 (13:32 -0300)
Signed-off-by: Rodrigo Campos <rodrigo@sdfg.com.ar>
README
bacap

diff --git a/README b/README
index 878f3dd592f7a2bc6a5f05cff7bc37a6def9abdb..c15200c97064fada6d8602b799e3590df8c3147b 100644 (file)
--- a/README
+++ b/README
@@ -70,13 +70,19 @@ file. Configuration files are searched in this places:
 1. ``/etc/bacaprc``
 2. ``/etc/bacap/bacaprc``
 3. ``bacaprc`` in the same directory as the ``bacap`` script
 1. ``/etc/bacaprc``
 2. ``/etc/bacap/bacaprc``
 3. ``bacaprc`` in the same directory as the ``bacap`` script
+4. Optional parameter passed as argument to the script
+5. ``$CONFIG_PATH/$HOST/bacaprc``
 
 Order is important, since all files are read (if possible) and values in the
 last configuration file read overwrites old values. The script takes an optional
 
 Order is important, since all files are read (if possible) and values in the
 last configuration file read overwrites old values. The script takes an optional
-parameter, which is another location to look for a configuration file. The
-configuration file passed as argument will be read last, and an error will be
-printed if can't be found (no error is issued if any of the other configuration
-files are missing).
+parameter, which is another location to look for a configuration file. If the
+configuration file passed as argument can't be found, an error will be printed
+(no error is issued if any of the other configuration files are missing).
+Also, config options could be specified on a per host basis by creating a
+``bacaprc`` file in ``$CONFIG_PATH/$HOST``. As a side effect of this,
+configuration file(s) are read initially and each time the script backups a new
+host. So the configuration file(s) are read at least two times even if you
+backup one host.
 
 The configuration file is a Bash_ script too, and these are the default values:
 
 
 The configuration file is a Bash_ script too, and these are the default values:
 
diff --git a/bacap b/bacap
index fb6cc5ec57baccb24df041b6419a5c1b7a5739f0..dd83d2ea489416b7898ff99517c2c3875851b2c8 100755 (executable)
--- a/bacap
+++ b/bacap
@@ -38,13 +38,17 @@ RSYNC_RSH="ssh -c arcfour -o Compression=no -x"
 
 #_INCLUDE_END_
 
 
 #_INCLUDE_END_
 
+SCRIPT_DIR=$(dirname `readlink -f $0`)
+BACAPRC=$1
 
 # Load configuration files
 
 # Load configuration files
-source "/etc/bacaprc" 2> /dev/null
-source "/etc/bacap/bacaprc" 2> /dev/null
-source `dirname \`readlink -f "$0"\``/bacaprc 2> /dev/null
-test -n "$1" && source "$1"
-
+load_config() {
+       source "/etc/bacaprc" 2> /dev/null
+       source "/etc/bacap/bacaprc" 2> /dev/null
+       source "$SCRIPT_DIR/bacaprc" 2> /dev/null
+       test -n "$BACAPRC" && source "$BACAPRC"
+}
+load_config
 
 export RSYNC_RSH
 
 
 export RSYNC_RSH
 
@@ -86,6 +90,9 @@ plog "========================================================================="
 ret=0
 for host_path in "$CONFIG_PATH"/*
 do
 ret=0
 for host_path in "$CONFIG_PATH"/*
 do
+       # Load default config and override config if correspond
+       load_config
+       source "$host_path/bacaprc" 2>/dev/null
        host=`basename "$host_path"`
        host_backup_path="$BACKUP_PATH/$host"
        dst="$BACKUP_PATH/$host/$date"
        host=`basename "$host_path"`
        host_backup_path="$BACKUP_PATH/$host"
        dst="$BACKUP_PATH/$host/$date"