如何加快SFTP转移?

时间:2018-04-18 02:48:47

标签: python paramiko

我希望从一个位置到另一个位置推送总计约200 gb的40-50个文件,而不将它们下载到中间位置。使用filezilla,我可以在~17-28mbis下载单个文件。使用paramiko,阅读速度只是其中的一小部分。 (相比之下,上传速度非常快。)

我尝试了一系列不同的方法,改变窗口大小,改变最大数据包,这些都有所帮助,但最终还是不能超过300kbs。有没有其他方法可以解决这个问题?

import paramiko
import math
import io
import time

transport = paramiko.Transport(host, port)
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport, window_size = 134217727, max_packet_size=pow(2,50))

chunk_size = 1024*250

for file in sftp.listdir():
    if 'SD_Demographic' in file:
        sftp_file = sftp.file(file, 'r')
        source_size = sftp_file._get_size()

        chunk_count = int(math.ceil(source_size / float(chunk_size)))

        for i in range(chunk_count):
            start = time.time()
            chunk = sftp_file.read(chunk_size)
            end = time.time()
            seconds = end - start
            print('%s read chunk from ftp (%i/%i) %ikbs' % (
                sftp_file, i + 1, chunk_count,
                math.ceil((chunk_size / 1024) / seconds)))

0 个答案:

没有答案