How to reproduce ================ Suppose we have hosts "src" and "dst" and we have testfolder/ test -> testfolder/ under /home and [root@heron home]# ll /home/test/ total 0 -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: /home/test/a 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.