Python sshpass未在两台linux计算机之间复制完整数据

Python sshpass未在两台linux计算机之间复制完整数据,python,paramiko,sshpass,Python,Paramiko,Sshpass,我使用python和paramiko在服务器a和服务器B之间复制5GB文件,脚本将从serverX执行,这将从serverX打开到serverb的ssh会话,并使用sshpass运行命令从服务器B复制文件。脚本正在工作,但它没有复制完整的5GB文件。它只复制了一半,有些时间还不到一半 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(s

我使用python和paramiko在服务器a和服务器B之间复制5GB文件,脚本将从serverX执行,这将从serverX打开到serverb的ssh会话,并使用sshpass运行命令从服务器B复制文件。脚本正在工作,但它没有复制完整的5GB文件。它只复制了一半,有些时间还不到一半

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(serverb, username=user, password=password)

try:
    stdin, stdout, stderr = client.exec_command("sshpass -p password scp -v -r root@serverA:/tmp/file_to_copy_name /tmp/",timeout=None)
except Exception as err:
    print("copy between server error")
    raise

您可能希望通过SSH使用Rsync,而不是通过sshpass(非交互式SSH密码提供程序)使用scp(安全远程文件复制)。它支持快速增量文件传输(可以恢复未完成的上传),使用SSH密钥比通过sshpass传递原始密码更安全

比如:

rsync -az /root/bigfile.txt 198.211.117.129:/root/
-存档模式的
-z
在传输过程中压缩文件数据

手册:
此外,它还可以恢复使用scp启动的复制

以下是有关如何通过SSH使用它的说明:

另外,@pynexj已经指出,
client.exec_command()
不会等到命令执行完成。因此,您可能希望使用其他方法来检查文件是否已成功复制,以及是否具有与源相同的数据。其中一个选项可能是检查MD5哈希:


您可能希望检查:

您可能希望使用SSH上的Rsync,而不是scp(安全远程文件复制)和sshpass(非交互式SSH密码提供程序)。它支持快速增量文件传输(可以恢复未完成的上传),使用SSH密钥比通过sshpass传递原始密码更安全

比如:

rsync -az /root/bigfile.txt 198.211.117.129:/root/
-存档模式的
-z
在传输过程中压缩文件数据

手册:
此外,它还可以恢复使用scp启动的复制

以下是有关如何通过SSH使用它的说明:

另外,@pynexj已经指出,
client.exec_command()
不会等到命令执行完成。因此,您可能希望使用其他方法来检查文件是否已成功复制,以及是否具有与源相同的数据。其中一个选项可能是检查MD5哈希:

您可能需要检查:

我想您可以使用

rsync -avP --partial source target
其中,
source
target
可以是远程服务器路径,也可以是本地服务器路径,按您所需的顺序排列。

我想您可以使用

rsync -avP --partial source target

其中,
source
target
可以是远程服务器路径,也可以是本地服务器路径,按您所需的顺序排列。

无错误消息。由于脚本正在工作但未完成数据,因此fullyNo错误消息。由于脚本正在工作但未完成数据完整,我正在使用此命令将20GB文件从ssh远程服务器复制到本地机器我正在使用此命令将20GB文件从ssh远程服务器复制到本地机器,如果需要使用自定义端口通过ssh进行rsync:
rsync-rvz-e'ssh-p8882'-进度root@198.211.117.129:/root/bigfile.txt./dir/
BTW,如果您需要使用自定义端口通过ssh进行rsync:
rsync-rvz-e'ssh-p 8882'-进度root@198.211.117.129:/root/bigfile.txt./dir/