如何使用paramiko恢复文件传输

3 投票
2 回答
2167 浏览
提问于 2025-04-18 10:24

我正在做一个Python项目,需要进行文件传输。一边的连接非常稳定(REHL 6),总是在线。而另一边则时断时续(Windows 7),连接的时间不太稳定。文件在两个方向上都需要传输,大小在10MB到2GB之间。

我想知道能不能用paramiko来恢复文件传输,而不是从头开始重新传输整个文件。

我想用rSync,但因为一边是Windows,所以我想避免使用cwRsync和DeltaCopy。

2 个回答

2

paramiko.sftp_client.SFTPClient 里面有一个 open 函数,这个函数的作用和 Python 自带的 open 函数是一样的。
你可以用它来打开本地文件和远程文件,并且可以手动把数据从一个文件传输到另一个文件,同时记录传输了多少数据。当连接中断时,你应该可以通过 seek 方法从中断的地方继续(前提是这两个文件没有被其他人修改)。不过要注意,简单的实现方式可能会比 paramiko 的 getput 函数慢。

2

Paramiko这个工具没有现成的“继续”功能,不过Syncrify是DeltaCopy的一个重要升级版,它内置了重试功能。如果备份过程中出现问题,服务器会等待最长六个小时再尝试重新连接。这个工具非常可靠,使用起来也简单,而且默认会进行数据差异比较。

撰写回答