【问题标题】:Resume SFTP download after connection fails (pysftp / paramiko)连接失败后恢复 SFTP 下载(pysftp / paramiko)
【发布时间】:2020-12-25 05:04:36
【问题描述】:

我正在尝试使用 pysftp / paramiko 构建一个简单的 SFTP 客户端。

如果传输中断,我如何恢复传输,例如如果连接失败?有没有办法重新开始传输,发现文件已经存在,然后从中断点开始传输更多数据?

我在这两个模块的文档中都找不到任何明确的信息。有没有类似于 OpenSSH 中的reget 命令的东西?

【问题讨论】:

    标签: python sftp paramiko pysftp


    【解决方案1】:

    Paramiko 和 pysftp 都不支持传输恢复。但是如果你看一下SFTPClient.get implementation,应该很容易实现简历。应该这样做:

    if os.path.isfile(localpath):
        localsize = os.stat(localpath)
    else
        localsize = 0
    remotesize = sftp.stat(remotepath).st_size
    if localsize < remotesize:
        with open(localpath, "ab") as fl,
             sftp.open(remotepath, "rb") as fr:
            if localsize > 0:
                fr.seek(localsize)
            fr.prefetch(remotesize)
            sftp._transfer_with_callback(
                reader=fr, writer=fl, file_size=remotesize, callback=None)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 2019-10-24
      • 2013-03-17
      • 2018-07-04
      相关资源
      最近更新 更多