rsync --remove-source-files deletes source files one by one or after rsync completes?

Solution 1:

Checking the rsync code reveals that source files are removed as they are sent, although it may not happen immediately. rsync multiplexes its operations, so the message that a file was successfully received (and can therefore be deleted) might be buffered behind other data.

Solution 2:

I tried it (and you could easily do it too, to be sure). They are removed after all files are transferred successfully. If the transfer is interrupted or another error occurs, the source files are not removed, even if some of them transferred OK.

EDIT: as per Kyle Jones's answer, the case might be different when many files are involved.