### Summary

When calling `ansible -m ansible.builtin.copy -a 'src=/dev/null dest=/tmp/xxx remote_src=true' localhost -b`, ansible complains that the _target_ file doesn't exist, and then, if the target file exists, removes the source `/dev/null` instead of copying it onto the target.

### Issue Type

Bug Report

### Component Name

ansible.builtin.copy

### Ansible Version

```console
$ ansible --version
ansible [core 2.12.6]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/elavarde/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  ansible collection location = /home/elavarde/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.12 (default, Sep 16 2021, 10:46:05) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
  jinja version = 2.10.3
  libyaml = True
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
BECOME:
======

CACHE:
=====

CALLBACK:
========

CLICONF:
=======

CONNECTION:
==========

HTTPAPI:
=======

INVENTORY:
=========

LOOKUP:
======

NETCONF:
=======

SHELL:
=====

VARS:
====
```


### OS / Environment

RHEL 8

### Steps to Reproduce

```
ansible -m ansible.builtin.copy -a 'src=/dev/null dest=/tmp/xxx remote_src=true' localhost -b
touch /tmp/xxx
ansible -m ansible.builtin.copy -a 'src=/dev/null dest=/tmp/xxx remote_src=true' localhost -b
```


### Expected Results

I expected the target file to be emptied by copy (similarly to what `cp /dev/null somefile` does). This works also if the _target_ file pre-exists and I call the command _without_ become.

### Actual Results

```console
$ ansible -m ansible.builtin.copy -a 'src=/dev/null dest=/tmp/xxx remote_src=true' localhost -b
localhost | FAILED! => {
    "changed": false,
    "msg": "path /tmp/xxx does not exist",
    "path": "/tmp/xxx"
}
$ touch /tmp/xxx
$ ansible -m ansible.builtin.copy -a 'src=/dev/null dest=/tmp/xxx remote_src=true' localhost -b
[WARNING]: Error deleting remote temporary files (rc: 1, stderr: /bin/sh: /dev/null: Permission denied })
Process WorkerProcess-1:
localhost | CHANGED => {
    "changed": true,
    "checksum": null,
    "dest": "/tmp/xxx",
    "gid": 1000,
    "group": "elavarde",
    "md5sum": null,
    "mode": "0664",
    "owner": "elavarde",
    "secontext": "unconfined_u:object_r:user_tmp_t:s0",
    "size": 0,
    "src": "/dev/null",
    "state": "file",
    "uid": 1000
}
Traceback (most recent call last):
  File "/usr/lib64/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/usr/lib/python3.8/site-packages/ansible/executor/process/worker.py", line 138, in run
    sys.stdout = sys.stderr = open(os.devnull, 'w')
PermissionError: [Errno 13] Permission denied: '/dev/null'
$ ls -la /dev/null
ls: cannot access '/dev/null': No such file or directory
```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
global module
    module = AnsibleModule(
        
        argument_spec=dict(
            src=dict(type='path'),
            _original_basename=dict(type='str'),  
            content=dict(type='str', no_log=True),
            dest=dict(type='path', required=True),
            backup=dict(type='bool', default=False),
            force=dict(type='bool', default=True),
            validate=dict(type='str'),
            directory_mode=dict(type='raw'),
            remote_src=dict(type='bool'),
            local_follow=dict(type='bool'),
            checksum=dict(type='str'),
            follow=dict(type='bool', default=False),
        ),
        add_file_common_args=True,
        supports_check_mode=True,