How to reproduce
Suppose we have hosts "src" and "dst" and we have
test -> testfolder/
under /home and
[root@heron home]# ll /home/test/
-rw-r--r-- 1 root root 0 Nov 13 15:29 a
-rw-r--r-- 1 root root 0 Nov 13 15:29 b
-rw-r--r-- 1 root root 0 Nov 13 15:29 c
we have file test.list which has contents below:
Now we run on host "src" following command:
rsync -avzog -r --super -e ssh --files-from=test.list --delete / dst:/
then rsync will ignore the fact that /home/test is a valid softlink to an existing directory on "dst" and will remove it and create a new directory "test" with file "a" underneath.
This is serious. For example if you only want to sync "smb" script under /etc/init.d, you'll end up with a new /etc/init.d with only "smb" inside it on the target machine because normally /etc/init.d->/etc/rc.d/init.d. Then you won't be able to boot up the system.
This is the expected behavior unless --no-implied-dirs or --keep-dirlinks is used. See the description of --no-implied-dirs in the man page.