### Summary

When uploading a non-zip archive (a `.tar.zst` in my case) the `unarchive` module fails to detect the correct unarchive handler for the uploaded file. It fails with the message `Failed to find handler for ...`.

As far as I understand it, the temporary file name for the uploaded file is simply `source`, it lacks any kind of extension despite that the source file has a `.tar.zst` extension. Thus, it then can't detect the correct unarchiver (`zstd` in this case), falls back to the `unzip` unarchiver which in turn fails to extract files from a zstandard archive.

I could workaround this issue by changing my role to first copy the archive via the `copy` module and then using the `unarchive` module to extract the archive.

Here is the full error message:
```
Failed to find handler for "./.ansible/tmp/ansible-tmp-1683126580.057546-55071-11471984781561/source". Make sure the required command to extract the file is installed.
Command "/usr/bin/tar" could not handle archive: Unable to list files in the archive: tar (child): ./.ansible/tmp/ansible-tmp-1683126580.057546-55071-11471984781561/source: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
/usr/bin/tar: Child returned status 2
/usr/bin/tar: Error is not recoverable: exiting now
Command "/usr/bin/tar" could not handle archive: Unable to list files in the archive: /usr/bin/tar: ./.ansible/tmp/ansible-tmp-1683126580.057546-55071-11471984781561/source: Cannot open: No such file or directory
/usr/bin/tar: Error is not recoverable: exiting now
Command "/usr/bin/unzip" could not handle archive:   End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
note:  ./.ansible/tmp/ansible-tmp-1683126580.057546-55071-11471984781561/source may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of ./.ansible/tmp/ansible-tmp-1683126580.057546-55071-11471984781561/source or
        ./.ansible/tmp/ansible-tmp-1683126580.057546-55071-11471984781561/source.zip, and cannot find ./.ansible/tmp/ansible-tmp-1683126580.057546-55071-11471984781561/source.ZIP, period.
```

### Issue Type

Bug Report

### Component Name

unarchive

### Ansible Version

```console
$ ansible --version

ansible [core 2.14.4]
  config file = /Users/<redacted>/configuration-ansible/ansible.cfg
  configured module search path = ['/Users/<redacted>/configuration-ansible/library']
  ansible python module location = /opt/homebrew/Cellar/ansible/7.4.0/libexec/lib/python3.11/site-packages/ansible
  ansible collection location = /Users/<redacted>/.ansible/collections:/usr/share/ansible/collections
  executable location = /opt/homebrew/bin/ansible
  python version = 3.11.3 (main, Apr  7 2023, 21:05:46) [Clang 14.0.0 (clang-1400.0.29.202)] (/opt/homebrew/Cellar/ansible/7.4.0/libexec/bin/python3.11)
  jinja version = 3.1.2
  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
CACHE_PLUGIN(/Users/<redacted>/configuration-ansible/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/Users/<redacted>/configuration-ansible/ansible.cfg) = ./.ansible/factcache
CACHE_PLUGIN_TIMEOUT(/Users/<redacted>/configuration-ansible/ansible.cfg) = 86400
COLOR_CHANGED(/Users/<redacted>/configuration-ansible/ansible.cfg) = yellow
COLOR_DEBUG(/Users/<redacted>/configuration-ansible/ansible.cfg) = dark gray
COLOR_DEPRECATE(/Users/<redacted>/configuration-ansible/ansible.cfg) = purple
COLOR_DIFF_ADD(/Users/<redacted>/configuration-ansible/ansible.cfg) = green
COLOR_DIFF_LINES(/Users/<redacted>/configuration-ansible/ansible.cfg) = cyan
COLOR_DIFF_REMOVE(/Users/<redacted>/configuration-ansible/ansible.cfg) = red
COLOR_ERROR(/Users/<redacted>/configuration-ansible/ansible.cfg) = red
COLOR_HIGHLIGHT(/Users/<redacted>/configuration-ansible/ansible.cfg) = white
COLOR_OK(/Users/<redacted>/configuration-ansible/ansible.cfg) = green
COLOR_SKIP(/Users/<redacted>/configuration-ansible/ansible.cfg) = cyan
COLOR_UNREACHABLE(/Users/<redacted>/configuration-ansible/ansible.cfg) = red
COLOR_VERBOSE(/Users/<redacted>/configuration-ansible/ansible.cfg) = blue
COLOR_WARN(/Users/<redacted>/configuration-ansible/ansible.cfg) = bright purple
CONFIG_FILE() = /Users/<redacted>/configuration-ansible/ansible.cfg
DEFAULT_FORKS(/Users/<redacted>/configuration-ansible/ansible.cfg) = 60
DEFAULT_GATHERING(/Users/<redacted>/configuration-ansible/ansible.cfg) = smart
DEFAULT_HOST_LIST(/Users/<redacted>/configuration-ansible/ansible.cfg) = ['/Users/<redacted>/configuration-ansible/inventory.ini']
DEFAULT_LOCAL_TMP(/Users/<redacted>/configuration-ansible/ansible.cfg) = /Users/<redacted>/configuration-ansible/.ansible/tmp/ansible-local-55791surhrytk
DEFAULT_LOG_PATH(/Users/<redacted>/configuration-ansible/ansible.cfg) = /Users/<redacted>/configuration-ansible/.ansible/ansible.log
DEFAULT_MANAGED_STR(/Users/<redacted>/configuration-ansible/ansible.cfg) = This file is managed by Ansible.%n
template: {file}
date: %Y-%m-%d %H:%M:%S
user: {uid}
host: {host}
DEFAULT_MODULE_NAME(/Users/<redacted>/configuration-ansible/ansible.cfg) = shell
DEFAULT_MODULE_PATH(/Users/<redacted>/configuration-ansible/ansible.cfg) = ['/Users/<redacted>/configuration-ansible/library']
DEFAULT_ROLES_PATH(/Users/<redacted>/configuration-ansible/ansible.cfg) = ['/Users/<redacted>/configuration-ansible/roles']
DEFAULT_TIMEOUT(/Users/<redacted>/configuration-ansible/ansible.cfg) = 10
DEFAULT_TRANSPORT(/Users/<redacted>/configuration-ansible/ansible.cfg) = ssh
DEFAULT_VAULT_PASSWORD_FILE(/Users/<redacted>/configuration-ansible/ansible.cfg) = /Users/<redacted>/configuration-ansible/vault_password.txt
HOST_KEY_CHECKING(/Users/<redacted>/configuration-ansible/ansible.cfg) = False
PERSISTENT_CONNECT_RETRY_TIMEOUT(/Users/<redacted>/configuration-ansible/ansible.cfg) = 15
PERSISTENT_CONNECT_TIMEOUT(/Users/<redacted>/configuration-ansible/ansible.cfg) = 30
RETRY_FILES_ENABLED(/Users/<redacted>/configuration-ansible/ansible.cfg) = False
TRANSFORM_INVALID_GROUP_CHARS(/Users/<redacted>/configuration-ansible/ansible.cfg) = never

CACHE:
=====

jsonfile:
________
_timeout(/Users/<redacted>/configuration-ansible/ansible.cfg) = 86400
_uri(/Users/<redacted>/configuration-ansible/ansible.cfg) = /Users/<redacted>/configuration-ansible/.ansible/factcache

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

paramiko_ssh:
____________
host_key_checking(/Users/<redacted>/configuration-ansible/ansible.cfg) = False

ssh:
___
host_key_checking(/Users/<redacted>/configuration-ansible/ansible.cfg) = False
timeout(/Users/<redacted>/configuration-ansible/ansible.cfg) = 10

SHELL:
=====

sh:
__
remote_tmp(/Users/<redacted>/configuration-ansible/ansible.cfg) = ./.ansible/tmp
```


### OS / Environment

macOS Monterey 12.6.5 (21G531)

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- name: Copy and extract file
  ansible.builtin.unarchive:
    copy: true
    src: "/foo/bar.tar.zst"
    dest: "/bar/baz"
    owner: root
    group: root
```


### Expected Results

I've expected the `unarchive` module to pick the correct unarchiver based on the file ending analogous to how `tar` does it, independently of whether the source archive is on the controller node or on the target node.

### Actual Results

```console
ansible [core 2.14.4]
  config file = /Users/<redacted>/configuration-ansible/ansible.cfg
  configured module search path = ['/Users/<redacted>/configuration-ansible/library']
  ansible python module location = /opt/homebrew/Cellar/ansible/7.4.0/libexec/lib/python3.11/site-packages/ansible
  ansible collection location = /Users/<redacted>/.ansible/collections:/usr/share/ansible/collections
  executable location = /opt/homebrew/bin/ansible
  python version = 3.11.3 (main, Apr  7 2023, 21:05:46) [Clang 14.0.0 (clang-1400.0.29.202)] (/opt/homebrew/Cellar/ansible/7.4.0/libexec/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
Using /Users/<redacted>/configuration-ansible/ansible.cfg as config file
host_list declined parsing /Users/<redacted>/configuration-ansible/inventory.ini as it did not pass its verify_file() method
script declined parsing /Users/<redacted>/configuration-ansible/inventory.ini as it did not pass its verify_file() method
auto declined parsing /Users/<redacted>/configuration-ansible/inventory.ini as it did not pass its verify_file() method
yaml declined parsing /Users/<redacted>/configuration-ansible/inventory.ini as it did not pass its verify_file() method
Parsed /Users/<redacted>/configuration-ansible/inventory.ini inventory source with ini plugin
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.
<somehost> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<somehost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' somehost '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo ./.ansible/tmp `"&& mkdir "` echo ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436 `" && echo ansible-tmp-1683129847.767861-56453-260060231192436="` echo ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436 `" ) && sleep 0'"'"''
<somehost> (0, b'ansible-tmp-1683129847.767861-56453-260060231192436=./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436\n', b'')
Using module file /opt/homebrew/Cellar/ansible/7.4.0/libexec/lib/python3.11/site-packages/ansible/modules/stat.py
<somehost> PUT /Users/<redacted>/configuration-ansible/.ansible/tmp/ansible-local-56403h5fsr_c5/tmpgqtp9xr0 TO ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_stat.py
<somehost> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' '[somehost]'
<somehost> (0, b'sftp> put /Users/<redacted>/configuration-ansible/.ansible/tmp/ansible-local-56403h5fsr_c5/tmpgqtp9xr0 ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_stat.py\n', b'')
<somehost> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<somehost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' somehost '/bin/sh -c '"'"'chmod u+x ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/ ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_stat.py && sleep 0'"'"''
<somehost> (0, b'', b'')
<somehost> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<somehost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' -tt somehost '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=dxuukajwsxhaooufoilpztdkfumzzovq] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-dxuukajwsxhaooufoilpztdkfumzzovq ; /usr/bin/python3 ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_stat.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<somehost> (0, b'\r\n\r\n{"changed": false, "stat": {"exists": true, "path": "/bar/baz", "mode": "0700", "isdir": true, "ischr": false, "isblk": false, "isreg": false, "isfifo": false, "islnk": false, "issock": false, "uid": 0, "gid": 0, "size": 4096, "inode": 795747, "dev": 2050, "nlink": 2, "atime": 1683129847.686823, "mtime": 1683129847.686823, "ctime": 1683129847.686823, "wusr": true, "rusr": true, "xusr": true, "wgrp": false, "rgrp": false, "xgrp": false, "woth": false, "roth": false, "xoth": false, "isuid": false, "isgid": false, "blocks": 8, "block_size": 4096, "device_type": 0, "readable": true, "writeable": true, "executable": true, "pw_name": "root", "gr_name": "root", "mimetype": "inode/directory", "charset": "binary", "version": "514766525", "attributes": ["extents"], "attr_flags": "e"}, "invocation": {"module_args": {"path": "/bar/baz", "follow": true, "get_checksum": true, "checksum_algorithm": "sha1", "get_md5": false, "get_mime": true, "get_attributes": true}}}\r\n', b'Shared connection to somehost closed.\r\n')
<somehost> PUT /foo/bar.tar.zst TO ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source
<somehost> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' '[somehost]'
<somehost> (0, b'sftp> put /foo/bar.tar.zst ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source\n', b'')
<somehost> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<somehost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' somehost '/bin/sh -c '"'"'chmod u+x ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/ ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source && sleep 0'"'"''
<somehost> (0, b'', b'')
Using module file /opt/homebrew/Cellar/ansible/7.4.0/libexec/lib/python3.11/site-packages/ansible/modules/unarchive.py
<somehost> PUT /Users/<redacted>/configuration-ansible/.ansible/tmp/ansible-local-56403h5fsr_c5/tmpq44m6md8 TO ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_unarchive.py
<somehost> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' '[somehost]'
<somehost> (0, b'sftp> put /Users/<redacted>/configuration-ansible/.ansible/tmp/ansible-local-56403h5fsr_c5/tmpq44m6md8 ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_unarchive.py\n', b'')
<somehost> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<somehost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' somehost '/bin/sh -c '"'"'chmod u+x ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/ ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_unarchive.py && sleep 0'"'"''
<somehost> (0, b'', b'')
<somehost> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<somehost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' -tt somehost '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=xvgbopenlqbmbyczywzmbmtpyhqvltbb] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-xvgbopenlqbmbyczywzmbmtpyhqvltbb ; /usr/bin/python3 ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/AnsiballZ_unarchive.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<somehost> (1, b'\r\n\r\n{"failed": true, "msg": "Failed to find handler for \\"./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source\\". Make sure the required command to extract the file is installed.\\nCommand \\"/usr/bin/tar\\" could not handle archive: Unable to list files in the archive: tar (child): ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source: Cannot open: No such file or directory\\ntar (child): Error is not recoverable: exiting now\\n/usr/bin/tar: Child returned status 2\\n/usr/bin/tar: Error is not recoverable: exiting now\\n\\nCommand \\"/usr/bin/unzip\\" could not handle archive:   End-of-central-directory signature not found.  Either this file is not\\n  a zipfile, or it constitutes one disk of a multi-part archive.  In the\\n  latter case the central directory and zipfile comment will be found on\\n  the last disk(s) of this archive.\\nnote:  ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source may be a plain executable, not an archive\\nunzip:  cannot find zipfile directory in one of ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source or\\n        ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source.zip, and cannot find ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source.ZIP, period.\\n\\nCommand \\"/usr/bin/tar\\" could not handle archive: Unable to list files in the archive: /usr/bin/tar: ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source: Cannot open: No such file or directory\\n/usr/bin/tar: Error is not recoverable: exiting now\\n", "invocation": {"module_args": {"src": "./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source", "dest": "/bar/baz", "owner": "root", "group": "root", "remote_src": false, "list_files": false, "keep_newer": false, "exclude": [], "include": [], "extra_opts": [], "validate_certs": true, "io_buffer_size": 65536, "copy": true, "decrypt": true, "unsafe_writes": false, "creates": null, "mode": null, "seuser": null, "serole": null, "selevel": null, "setype": null, "attributes": null}}}\r\n', b'Shared connection to somehost closed.\r\n')
<somehost> Failed to connect to the host via ssh: Shared connection to somehost closed.
<somehost> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<somehost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o 'ControlPath="/Users/<redacted>/.ansible/cp/3d6108e6c3"' somehost '/bin/sh -c '"'"'rm -f -r ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/ > /dev/null 2>&1 && sleep 0'"'"''
<somehost> (0, b'', b'')
somehost | FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "attributes": null,
            "copy": true,
            "creates": null,
            "decrypt": true,
            "dest": "/bar/baz",
            "exclude": [],
            "extra_opts": [],
            "group": "root",
            "include": [],
            "io_buffer_size": 65536,
            "keep_newer": false,
            "list_files": false,
            "mode": null,
            "owner": "root",
            "remote_src": false,
            "selevel": null,
            "serole": null,
            "setype": null,
            "seuser": null,
            "src": "./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source",
            "unsafe_writes": false,
            "validate_certs": true
        }
    },
    "msg": "Failed to find handler for \"./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source\". Make sure the required command to extract the file is installed.\nCommand \"/usr/bin/tar\" could not handle archive: Unable to list files in the archive: tar (child): ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source: Cannot open: No such file or directory\ntar (child): Error is not recoverable: exiting now\n/usr/bin/tar: Child returned status 2\n/usr/bin/tar: Error is not recoverable: exiting now\n\nCommand \"/usr/bin/unzip\" could not handle archive:   End-of-central-directory signature not found.  Either this file is not\n  a zipfile, or it constitutes one disk of a multi-part archive.  In the\n  latter case the central directory and zipfile comment will be found on\n  the last disk(s) of this archive.\nnote:  ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source may be a plain executable, not an archive\nunzip:  cannot find zipfile directory in one of ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source or\n        ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source.zip, and cannot find ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source.ZIP, period.\n\nCommand \"/usr/bin/tar\" could not handle archive: Unable to list files in the archive: /usr/bin/tar: ./.ansible/tmp/ansible-tmp-1683129847.767861-56453-260060231192436/source: Cannot open: No such file or directory\n/usr/bin/tar: Error is not recoverable: exiting now\n"
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
elif uid and uid != fut_uid:
                change = True
                err += 'Path %s is owned by uid %s, not by uid %s as expected\n' % (path, uid, fut_uid)
                itemized[6] = 'o'
            
            group = gid = None
            try:
                group = grp.getgrgid(st.st_gid).gr_name
            except (KeyError, ValueError, OverflowError):
                gid = st.st_gid
            if run_uid != 0 and (fut_group != run_group or fut_gid != run_gid) and fut_gid not in groups:
                raise UnarchiveError('Cannot change group ownership of %s to %s, as user %s' % (path, fut_group, run_owner))
            if group and group != fut_group:
                change = True
                err += 'Path %s is owned by group %s, not by group %s as expected\n' % (path, group, fut_group)
                itemized[6] = 'g'
            elif gid and gid != fut_gid:
                change = True
                err += 'Path %s is owned by gid %s, not by gid %s as expected\n' % (path, gid, fut_gid)
                itemized[6] = 'g'
            
            if change:
                if path not in self.includes:
                    self.includes.append(path)
                diff += '%s %s\n' % (''.join(itemized), path)
        if self.includes:
            unarchived = False
        
        return dict(unarchived=unarchived, rc=rc, out=out, err=err, cmd=cmd, diff=diff)
    def unarchive(self):