CONFIG_PATH=/etc/bacap/hosts
# Name of the local host (so no ssh would be used with this host)
-LOCALHOST=localhost
+LOCALHOST=$HOSTNAME
# Where to put the backups
BACKUP_PATH=/backup
#_INCLUDE_END_
+SCRIPT_DIR=$(dirname `readlink -f $0`)
+BACAPRC=$1
# 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
ret=0
for host_path in "$CONFIG_PATH"/*
do
+ saved_ret=$ret
+ # 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" != "$LOCALHOST" ] &&
src=`awk "{print \"$host:\"\\$1}" "$host_path/paths"`
exclude="$host_path/excludes"
+ include="$host_path/includes"
current_link="$host_backup_path/current"
current_dir="$host_backup_path/`readlink \"$current_link\"`"
exclude_flags=
+ include_flags=
plog "-----------------------------------------------------------------"
plog "Backup for host $host"
plog "-----------------------------------------------------------------"
- plog "Source: "$src
+ plog "Source: $src"
plog "Destination: $dst"
plog "Last: $current_dir"
plog
perror "$host is down, skipping..." &&
continue
[ -r "$exclude" ] &&
- exclude_flags=" --exclude-from=$exclude --delete-excluded"
+ extra_flags="--exclude-from=$exclude --delete-excluded"
+ [ -r "$include" ] &&
+ extra_flags="$extra_flags --include-from=$include"
plog "Rotating backup..."
$run cp -al $V "$current_dir" "$dst" ||
ret=$(($ret+1))
plog "Running rsync..."
- $run rsync $RSYNC_FLAGS $exclude_flags $src "$dst/" ||
+ $run rsync $RSYNC_FLAGS $extra_flags $src "$dst/" ||
ret=$(($ret+1))
plog "Moving current..."
$run rm $V "$current_link" ||
ret=$(($ret+1))
$run ln -s $V "$date" "$current_link" ||
ret=$(($ret+1))
+ if [ $ret -ne $saved_ret ]
+ then
+ ERROR_HOSTS="$ERROR_HOSTS $host"
+ fi
done
plog "========================================================================="
if [ $ret -ne 0 ]
then
- pout 'There were some errors when running the backup.'
+ pout "There were some errors when running the backup on: $ERROR_HOSTS"
pout
pout "Please take a look at the log: $LOG_FILE"
pout