I set up an rsync daemon in /home/matt/test/daemon-log-paths/daemon with this rsyncd.conf: log file = rsyncd.log transfer logging = yes log format = %i %f pid file = rsyncd.pid port = 3142 use chroot = no [module] path = dir/ read only = false auth users = user secrets file = module.secrets Then I pushed a directory to it as follows: [matt@mattlaptop2 daemon-log-paths]$ pwd /home/matt/test/daemon-log-paths [matt@mattlaptop2 daemon-log-paths]$ ls -l src total 0 -rw------- 1 matt matt 0 2007-07-01 18:06 a [matt@mattlaptop2 daemon-log-paths]$ ls -l daemon/dir/subdir total 0 -rw------- 1 matt matt 0 2007-07-01 18:06 b [matt@mattlaptop2 daemon-log-paths]$ ~/rsync/rsync/rsync -rt --del src/ rsync://user@localhost:3142/module/subdir/ Password: [matt@mattlaptop2 daemon-log-paths]$ The resulting rsyncd.log was: 2007/07/01 21:04:23 [8458] rsyncd version 3.0.0cvs starting, listening on port 3142 2007/07/01 21:05:17 [8499] connect from localhost (127.0.0.1) 2007/07/01 21:05:18 [8499] rsync to module/subdir/ from user@localhost (127.0.0.1) 2007/07/01 21:05:18 [8499] receiving file list 2007/07/01 21:05:18 [8499] *deleting me/matt/test/daemon-log-paths/daemon/dir/subdir/b 2007/07/01 21:05:18 [8499] .d..t...... me/matt/test/daemon-log-paths/daemon/dir/subdir/. 2007/07/01 21:05:18 [8499] >f+++++++++ me/matt/test/daemon-log-paths/daemon/dir/subdir/a 2007/07/01 21:05:18 [8499] sent 96 bytes received 183 bytes total size 0 I expected the logged paths to be relative to the root of the module as per Wayne's remarks at http://lists.samba.org/archive/rsync/2007-June/017896.html , but instead they are absolute paths missing the first few characters. The trouble is that rsync sets module_dirlen to the length of the module path as given in rsyncd.conf at line 371 of clientserver.c but then uses it as an index into curr_dir at line 535 of log.c . curr_dir begins with the absolute, symlink-free path of the module, but if the path in rsyncd.conf is relative or uses symlinks, skipping its length in curr_dir is meaningless. To fix the bug, rsync needs to set module_dirlen to the length of its current directory right after it chdirs into the module.
It is not valid for the path to be relative.
Bummer. Please document that in the rsyncd.conf man page.
I decided to add code to figure out the absolute path of a relative-path module. Should be fixed now.