Note to serverfault users: This closed question is answered here by four comments by hynekcer. It is then well accepted in other comments as a regularly answerable question. It's now being voted for re-opening.
When both source and destination are remote, rsync complains:
The source and destination cannot both be remote. rsync error: syntax or usage error (code 1) at main.c(1156) [Receiver=3.0.7]
Is there an insurmountable technical obstacle to making rsync do this? Or is it simply a case of not-yet-implemented? It seems relatively easy to create a local buffer in memory that mediates the transfer between two remotes, holding both hashes and data.
rolling hashalgorithm for all bytes of the block. It is clear that this big range must use the slow uncached memory. It would be a controversial idea to implement the "active" part on a remote side if you imagine that it could be a file server that must execute more similar concurrent requests, or even a cheap NAS server... – hynekcer Nov 13 '16 at 20:29rsyncdoesn't have a-3option likescp? Couldn't thersynccommand just pass the traffic between the two remote hosts through without loss of efficiency? And hynecker gives a good answer. – reinierpost Mar 16 '17 at 09:53rolling hashalgorithm algorithm requires that full data of one side must be accessible: "The sender computes the checksum for each rolling section in its version of the file" [rsync wiki - Algorithm] (https://en.wikipedia.org/wiki/Rsync#Algorithm). There is nothing to be cached by the third side. It can only authorize the transfer (prepare a restricted temporary SSH authorized key) and create a network tunnel, not to control a transfer. – hynekcer Feb 20 '21 at 14:27