<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
Given a directory containing files and symlinks, if one tries to copy the directory recursively using the `copy` module and sets `local_follow=no` and `mode=preserve`, the copy module fails with:
```
bad symbolic permission for mode: preserve
```

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
copy

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```
ansible 2.9.6
  config file = /home/mbroe/.ansible.cfg
  configured module search path = ['/home/mbroe/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.7.6 (default, Jan 30 2020, 10:29:04) [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```
DEFAULT_VAULT_PASSWORD_FILE(/home/mbroe/.ansible.cfg) = /home/mbroe/.vault_pass.txt
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
`lsb_release -a`:
```
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 30 (Thirty)
Release:	30
Codename:	Thirty
```

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->

<!--- HINT: You can paste gist.github.com links for larger files -->
https://gist.github.com/mitchellroe/08be2d69cf7c961067a4a3071fa57c75

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
The file and symlink are copied with their modes preserved.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
The file is copied, the link is copied, but ansible-playbook fails with `bad symbolic permission for mode: preserve`.

<!--- Paste verbatim command output between quotes -->
[Output](https://gist.github.com/mitchellroe/76bac2153ad37a47f1e056d8c92b2ece)
new_module_args['mode'] = lmode
            
            module_return = self._execute_module(module_name='file', module_args=new_module_args, task_vars=task_vars)
        if not module_return.get('checksum'):
            module_return['checksum'] = local_checksum
        result.update(module_return)
        return result
    def _create_content_tempfile(self, content):
        ''' Create a tempfile containing defined content '''
        fd, content_tempfile = tempfile.mkstemp(dir=C.DEFAULT_LOCAL_TMP)
        f = os.fdopen(fd, 'wb')
        content = to_bytes(content)
        try:
            f.write(content)
        except Exception as err:
            os.remove(content_tempfile)
            raise Exception(err)
        finally:
            f.close()
        return content_tempfile
    def _remove_tempfile_if_content_defined(self, content, content_tempfile):
        if content is not None:
            os.remove(content_tempfile)
    def run(self, tmp=None, task_vars=None):
        ''' handler for file transfer operations '''
        if task_vars is None:
            task_vars = dict()
        result = super(ActionModule, self).run(tmp, task_vars)
        del tmp  
        source = self._task.args.get('src', None)