rsync over stdin/stdout

Tony Mantler Tony.Mantler at
Mon Jun 2 21:29:06 GMT 2008

On Mon, 2008-06-02 at 13:45 -0700, Matt McCutchen wrote:
> On Mon, 2008-06-02 at 11:27 -0700, Tony Mantler wrote: 
> > Basically I need to set up the socket beforehand and then hand it to
> > rsync somehow. This seems to be possible on the 'remote' end, but I
> > haven't managed to figure out how to do on the initiation side.
> First, you should use an rsync daemon if you aren't already; with the
> remote shell mode, you have to get the server arguments across the
> socket yourself, whereas the daemon protocol takes care of that.

The program I have handles that fairly well, actually. It's not too far
removed from complete rsh functionality.

> There's an enhancement request for a "&3::module/src/" syntax to make
> the client access a daemon over a socket supplied on a fd:

That's pretty much exactly what I'm looking for. It's a shame it's just
sitting as an enhancement request, but I suppose the need for it is
fairly rare.

> In the absence of this enhancement, you can accomplish the same thing
> using the RSYNC_CONNECT_PROG environment variable (or --rsh, but
> RSYNC_CONNECT_PROG is slightly more convenient).  Have the
> RSYNC_CONNECT_PROG inherit the socket from rsync and bridge the socket
> to its own stdin/stdout for use by rsync.  Here's an example, assuming
> the socket is already on fd 3 of the shell:
> RSYNC_CONNECT_PROG='cat >&3 & cat <&3; wait' rsync -a foo::module/src/ dest/
> The hostname, here "foo", doesn't matter, since RSYNC_CONNECT_PROG
> overrides it.

That probably won't work very well in my case.

More information about the rsync mailing list