def copy_file(self, share_name, directory_name, file_name, copy_source,<EOL>metadata=None, timeout=None):
_validate_not_none('<STR_LIT>', share_name)<EOL>_validate_not_none('<STR_LIT>', file_name)<EOL>_validate_not_none('<STR_LIT>', copy_source)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT>'<EOL>request.host_locations = self._get_host_locations()<EOL>request.path = _get_path(share_name, directory_name, file_name)<EOL>request.query = {'<STR_LIT>': _int_to_str(timeout)}<EOL>request.headers = {<EOL>'<STR_LIT>': _to_str(copy_source),<EOL>}<EOL>_add_metadata_headers(metadata, request)<EOL>return self._perform_request(request, _parse_properties, [FileProperties]).copy<EOL>
Copies a file asynchronously. This operation returns a copy operation 
properties object, including a copy ID you can use to check or abort the 
copy operation. The File service copies files on a best-effort basis.

If the destination file exists, it will be overwritten. The destination 
file cannot be modified while the copy operation is in progress.

:param str share_name:
    Name of the destination share. The share must exist.
:param str directory_name:
    Name of the destination directory. The directory must exist.
:param str file_name:
    Name of the destination file. If the destination file exists, it will 
    be overwritten. Otherwise, it will be created.
:param str copy_source:
    A URL of up to 2 KB in length that specifies an Azure file or blob. 
    The value should be URL-encoded as it would appear in a request URI. 
    If the source is in another account, the source must either be public 
    or must be authenticated via a shared access signature. If the source 
    is public, no authentication is required.
    Examples:
    https://myaccount.file.core.windows.net/myshare/mydir/myfile
    https://otheraccount.file.core.windows.net/myshare/mydir/myfile?sastoken
:param metadata:
    Name-value pairs associated with the file as metadata. If no name-value 
    pairs are specified, the operation will copy the metadata from the 
    source blob or file to the destination file. If one or more name-value 
    pairs are specified, the destination file is created with the specified 
    metadata, and the metadata is not copied from the source blob or file. 
:type metadata: dict(str, str).
:param int timeout:
    The timeout parameter is expressed in seconds.
:return: Copy operation properties such as status, source, and ID.
:rtype: :class:`~azure.storage.file.models.CopyProperties`