<p>您可能希望通过SSH使用Rsync,而不是通过sshpass(<em>非交互式SSH密码提供程序</em>)使用scp(<strong>secure remote file copy</em>)。它支持快速增量文件传输(可以恢复未完成的上传),使用SSH密钥比通过<strong>sshpass</strong>传递原始密码更安全</p>
<p>比如:</p>
<pre><code>rsync -az /root/bigfile.txt 198.211.117.129:/root/
</code></pre>
<p><code>-a</code>用于存档模式
<code>-z</code>在传输过程中压缩文件数据</p>
<p>手册:<a href="https://download.samba.org/pub/rsync/rsync.html" rel="nofollow noreferrer">https://download.samba.org/pub/rsync/rsync.html</a><br/>
此外,它还可以恢复使用scp启动的复制</p>
<p>以下是有关如何通过SSH使用它的说明:
<a href="https://www.digitalocean.com/community/tutorials/how-to-copy-files-with-rsync-over-ssh" rel="nofollow noreferrer">https://www.digitalocean.com/community/tutorials/how-to-copy-files-with-rsync-over-ssh</a></p>
<p>另外,正如@pynexj所指出的,<code>client.exec_command()</code>不会等到命令执行完成。因此,您可能希望使用其他方法来检查文件是否已成功复制,以及是否具有与源相同的数据。其中一个选项可以是检查MD5哈希:<a href="https://stackoverflow.com/search?q=Python+md5+hash">https://stackoverflow.com/search?q=Python+md5+hash</a></p>
<p>您可能需要检查:<a href="https://stackoverflow.com/questions/1761607/what-is-the-fastest-hash-algorithm-to-check-if-two-files-are-equal">What is the fastest hash algorithm to check if two files are equal?</a></p>