- $run rsync $RSYNC_FLAGS $extra_flags $src "$dst/" ||
- ret=$(($ret+1))
- plog "Moving current..."
- $run rm $V "$current_link" ||
+ $run rsync $RSYNC_FLAGS $extra_flags \
+ --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" ||