rsync architecture

Jignesh Shah jignesh.shah1980 at gmail.com
Wed Dec 17 10:33:27 GMT 2008


Thanks a lot Matt. I understood everying now. :-)

On Wed, Dec 17, 2008 at 4:55 AM, Matt McCutchen <matt at mattmccutchen.net>wrote:

> On Mon, 2008-12-15 at 10:14 +0530, Jignesh Shah wrote:
> > I am trying to see the rsync source code. I could see that there are
> > main three processes: I realize that Server or Client becomes Sender
> > or Receiver based on arguments provided.
>
> > 1. What is the roll of deamon process. How it different from server?
> > Does it run always on remote machine? When I do rsync from client how
> > remote deamon/server will get triggered?
>
> In the context of rsync, the server is simply the rsync process that is
> accessed on the user's behalf to handle one end of the transfer: the
> remote end if there is one, or otherwise (arbitrarily) the destination.
> A daemon is a server with some extra features controlled by a
> configuration file: it limits clients to accessing areas of the
> filesystem defined as "modules", and it can optionally listen on a port
> for any number of client connections (which it handles individually).
>
> An rsync client can fork a server locally, invoke a plain server over
> remote shell, connect to a listening daemon, or invoke a single-use
> daemon over remote shell.  In the last two cases, rsync carries out a
> "daemon protocol" before the main transfer protocol begins.
>
> (Now that I've taken the time to write a complete, concise explanation,
> maybe it will eventually find its way into my revised man page.)
>
> > 2 .Where the arguments are being set. I cannot see any of
> > arguments(like am_server, am_deamon etc) is being set anywhere.
>
> They are set from the --daemon and --server command-line arguments.
> "git grep" is your friend:
>
> rsync $ git grep -E -n 'am_(server|daemon) ='
> cleanup.c:110: am_server = 2;
> clientserver.c:773: am_server = 1; /* Don't let someone try to be
> tricky. */
> options.c:79:int am_server = 0;
> options.c:100:int am_daemon = 0;
> options.c:1305: am_server = 1;
> options.c:1386: am_daemon = 1;
> pipe.c:135: am_server = 1;
>
> --
> Matt
>
>
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the rsync mailing list