PING_CHECK=1
# rsync flags to use
-RSYNC_FLAGS="-aAXHx --numeric-ids --delete"
+RSYNC_FLAGS="-aAXHx --numeric-ids"
# rsync flags to use when in verbose mode
RSYNC_VERBOSE_FLAGS="-v --stats"
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 -f $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