In that case WinSCP does "cp -p -r -f". What would you suggest instead?
Thanks for the specifics. After some testing and googling, I found some details on the cp -r option
By default, cp follows symbolic links only when not copying recursively. This default can be overridden with the --archive (-a), -d, --dereference (-L), --no-dereference (-P), and -H options. If more than one of these options is specified, the last one silently overrides the others.
By default, cp copies the contents of special files only when not copying recursively. This default can be overridden with the --copy-contents option.
So, for instance:
$ touch target.txt # make a file
$ ln -s target.txt symlink_to_target.txt # symlink to it
$ cp symlink_to_target.txt cp_of_symlink_to_target.txt # cp copies target
$ cp -r symlink_to_target.txt cp_r_of_symlink_to_target.txt # cp -r copies symlink
$ ls -l
-rw-r--r-- 1 ... 0 Jan 12 13:39 cp_of_symlink_to_target.txt
lrwxrwxrwx 1 ... 10 Jan 12 13:41 cp_r_of_symlink_to_target.txt -> target.txt
lrwxrwxrwx 1 ... 10 Jan 12 13:39 symlink_to_target.txt -> target.txt
-rw-r--r-- 1 ... 0 Jan 12 13:38 target.txt
I would suggest a warning prompt asking how to copy symlinks (with the usual "Do not show this message again" option to minimize the inconvenience). The decision might amount to setting one of the -adLPH options mentioned above, but I'm not familiar enough with them to know which one to use.
(Alternatively, the -r option might be omitted if the selection being Duplicate'd does not contain any directories. However, I suspect this would be at least as confusing as the current implementation.)
Thank you very much for your help.