<!--- 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)
content = self._task.args.get('content', None)
        dest = self._task.args.get('dest', None)
        remote_src = boolean(self._task.args.get('remote_src', False), strict=False)
        local_follow = boolean(self._task.args.get('local_follow', True), strict=False)
        result['failed'] = True
        if not source and content is None:
            result['msg'] = 'src (or content) is required'
        elif not dest:
            result['msg'] = 'dest is required'
        elif source and content is not None:
            result['msg'] = 'src and content are mutually exclusive'
        elif content is not None and dest is not None and dest.endswith("/"):
            result['msg'] = "can not use content with a dir as dest"
        else:
            del result['failed']
        if result.get('failed'):
            return self._ensure_invocation(result)
        
        content_tempfile = None
        
        if content is not None:
            try:
                
                
                if isinstance(content, dict) or isinstance(content, list):
                    content_tempfile = self._create_content_tempfile(json.dumps(content))
                else:
                    content_tempfile = self._create_content_tempfile(content)
                source = content_tempfile
            except Exception as err: