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 = self._get_host()<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>('<STR_LIT>', metadata),<EOL>]<EOL>response = self._perform_request(request)<EOL>props = _parse_properties(response, FileProperties)<EOL>return props.copy<EOL>
Copies a blob or file to a destination file within the storage account. 

:param str share_name:
    Name of existing share.
:param str directory_name:
    The path to the directory.
:param str file_name:
    Name of existing file.
:param str copy_source:
    Specifies the URL of the source blob or file, up to 2 KB in length. 
    A source file in the same account can be private, but a file in another account
    must be public or accept credentials included in this URL, such as
    a Shared Access Signature. Examples:
    https://myaccount.file.core.windows.net/myshare/mydirectory/myfile
:param metadata:
    Dict containing name, value pairs.
:type metadata: A dict mapping str to 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`