There's a subtle bug that causes fcopy -H -r to fail to copy a symlink in case it points to an existing directory, i.e. files/tmp/etc/CLASS -> /etc The problem is that when purging non-leaf directories from the list of entries to process, the entry is purged because the class directory entry (files/tmp/etc/CLASS in the example above) is (a symlink to) a directory (/etc in the example above).
The attached patch seems to fix that.
--- /usr/sbin/fcopy 2014-01-08 09:26:05.000000000 +0100 +++ /var/tmp/fcopy 2016-07-01 12:47:02.480376704 +0200 @@ -479,7 +479,7 @@ my %ignoredirs; map $ignoredirs{$_}=1,@ignoredirs; File::Find::find({ - wanted => sub { $has_subdirs{$File::Find::dir} |= -d}, + wanted => sub { $has_subdirs{$File::Find::dir} |= !($opt_H && -l) && -d}, preprocess => sub { grep ! (-d and exists($ignoredirs{$_})),@_}}, @ARGV); foreach (keys %has_subdirs) {