我希望将大约40-50个文件从一个位置推送到另一个位置,总共约200 gb,而无需将它们下载到中间位置。有了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)))
目前没有回答
相关问题 更多 >
编程相关推荐