【问题标题】:How to resume file transferring with paramiko如何使用 paramiko 恢复文件传输
【发布时间】:2014-06-19 18:53:57
【问题描述】:
我正在开发一个需要传输文件的 Python 项目。连接的一侧是高度可用的 (REHL 6) 并且始终在线。但是另一端正在打开和关闭(Windows 7)并且无法保证连接期限。文件双向传输,大小在 10MB 到 2GB 之间。
是否可以使用 paramiko 恢复文件传输,而不是从头开始传输整个文件。
我想使用 rSync,但一方面是 windows,我想避免 cwRsync 和 DeltaCopy
【问题讨论】:
标签:
python
sftp
file-transfer
paramiko
resume
【解决方案1】:
Paramiko 不提供开箱即用的“恢复”功能,但 DeltaCopy 的重要继任者 Syncrify 内置了重试功能,如果备份出现故障,服务器将等待长达六个小时的重新连接。默认情况下非常可靠,易于使用和数据差异。
【解决方案2】:
paramiko.sftp_client.SFTPClient 包含一个open 函数,其功能与python 内置的open 函数完全相同。
您可以使用它来打开本地和远程文件,并手动将数据从一个文件传输到另一个文件,同时记录已传输的数据量。当连接中断时,您应该能够使用seek 方法从中断的地方继续(假设第三方未更改任何文件)。
请记住,这种简单的实现可能比 paramiko 的 get 和 put 函数要慢。