예제 #1
0
 def download(self, source, target, mode='', callback=None):
     """
     Download a file from the remote source (name) to the local
     target (name). The argument mode is an empty string or 'a' for
     text copies, or 'b' for binary copies.
     """
     # Fail early if we get a unicode path which can't be encoded.
     # Only attempt to convert the remote `source` name to a
     # bytestring. We leave it to the local filesystem whether it
     # wants to support unicode filenames or not.
     source = str(source)
     source_file, target_file = self._download_files(source, target, mode)
     file_transfer.copy_file(source_file, target_file,
                             conditional=False, callback=callback)
예제 #2
0
    def upload_if_newer(self, source, target, mode='', callback=None):
        """
        Upload a file only if it's newer than the target on the
        remote host or if the target file does not exist. See the
        method `upload` for the meaning of the parameters.

        If an upload was necessary, return `True`, else return `False`.
        """
        # See comment in `upload`.
        target = str(target)
        source_file, target_file = self._upload_files(source, target, mode)
        return file_transfer.copy_file(source_file, target_file,
                                       conditional=True, callback=callback)