PING_CHECK=1
# rsync flags to use
-RSYNC_FLAGS="-aAXHx --numeric-ids --delete"
+RSYNC_FLAGS="-aAHSXx --numeric-ids"
# rsync flags to use when in verbose mode
RSYNC_VERBOSE_FLAGS="-v --stats"
RSYNC_FLAGS="$RSYNC_FLAGS $RSYNC_VERBOSE_FLAGS"
[ $DEBUG -eq 1 ] &&
V=-v
+exec 3>&2
[ -n "$LOG_FILE" ] &&
- exec 3>&2 &&
exec 1>>"$LOG_FILE" &&
exec 2>>"$LOG_FILE"
source "$host_path/bacaprc" 2>/dev/null
host=`basename "$host_path"`
host_backup_path="$BACKUP_PATH/$host"
+ mkdir -p $host_backup_path
dst="$BACKUP_PATH/$host/$date"
src=`cat "$host_path/paths"`
[ "$host" != "$LOCALHOST" ] &&
current_dir="$host_backup_path/`readlink \"$current_link\"`"
extra_flags=
plog "-----------------------------------------------------------------"
- plog "Backup for host $host"
+ plog "Backup for host $host started at `date '+%Y-%m-%d %H:%M:%S'`"
plog "-----------------------------------------------------------------"
plog "Source: $src"
plog "Destination: $dst"
perror "$host is down, skipping..." &&
continue
[ -r "$exclude" ] &&
- extra_flags="--exclude-from=$exclude --delete-excluded"
+ extra_flags="--exclude-from=$exclude"
[ -r "$include" ] &&
extra_flags="$extra_flags --include-from=$include"
plog "Running rsync..."
$run rsync $RSYNC_FLAGS $extra_flags \
- --link-dest="$current_dir" $src "$dst/" ||
- ret=$(($ret+1))
- plog "Moving current..."
- $run rm $V "$current_link" ||
+ --link-dest="$current_dir" $src "$dst/"
+ rsync_ret=$?
+ case $rsync_ret in
+ 0)
+ # Normal return
+ ;;
+ 24)
+ # Ignore error 24 from rsync ("Partial transfer due to
+ # vanished source files") which is somewhat expected
+ # since we don't do a snapshot
+ ;;
+ *)
+ # Any other error is important enough
+ ret=$(($ret+1))
+ ;;
+ esac
+
+ if [ $ret -eq $saved_ret ]
+ then
+ # Only move current if rsync did not fail, to avoid dangling
+ # symlinks
+ plog "Moving current..."
+ $run rm -f $V "$current_link" ||
ret=$(($ret+1))
- $run ln -s $V "$date" "$current_link" ||
+ $run ln -s $V "$date" "$current_link" ||
ret=$(($ret+1))
- if [ $ret -ne $saved_ret ]
- then
+ else
ERROR_HOSTS="$ERROR_HOSTS $host"
fi
done
if [ $ret -ne 0 ]
then
- pout "There were some errors when running the backup on: $ERROR_HOSTS"
pout
- pout "Please take a look at the log: $LOG_FILE"
+ pout "There were some errors when running the backup on: $ERROR_HOSTS"
pout
+ if [ -n "$LOG_FILE" ]
+ then
+ pout "Please take a look at the log: $LOG_FILE"
+ pout
+ fi
fi
exit $ret