yes, that work but at rysc manual you will find:
USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION
It is sometimes useful to use various features of an rsync daemon (such as named modules) without actually allowing any new socket connections into
a system (other than what is already required to allow remote-shell access). Rsync supports connecting to a host using a remote shell and then
spawning a single-use "daemon" server that expects to read its config file in the home dir of the remote user. This can be useful if you want to
encrypt a daemon-style transfer’s data, but since the daemon is started up fresh by the remote user, you may not be able to use features such as
chroot or change the uid used by the daemon. (For another way to encrypt a daemon transfer, consider using ssh to tunnel a local port to a remote
machine and configure a normal rsync daemon on that remote host to only allow connections from "localhost".)
From the user’s perspective, a daemon transfer via a remote-shell connection uses nearly the same command-line syntax as a normal rsync-daemon
transfer, with the only exception being that you must explicitly set the remote shell program on the command-line with the --rsh=COMMAND option.
(Setting the RSYNC_RSH in the environment will not turn on this functionality.) For example:
rsync -av --rsh=ssh host::module /dest
If you need to specify a different remote-shell user, keep in mind that the user@ prefix in front of the host is specifying the rsync-user value
(for a module that requires user-based authentication). This means that you must give the ’-l user’ option to ssh when specifying the remote- shell, as in this example that uses the short version of the --rsh option:
rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest
The "ssh-user" will be used at the ssh level; the "rsync-user" will be used to log-in to the "module".
so I tried it , but it never work!