我使用下面的scp语法为了将文件从Linux红帽子5转移到Windows机器(在Temp目录下),
备注:
我在我的shell脚本中使用这一行
sshpass -p '$password' /usr/bin/scp -o StrictHostKeyChecking=no $FILE [email protected]:'D:/Temp'
在大多数情况下文件传输成功
但有时scp卡在文件传输? ,尽pipe连接是可以的,如ping等
并从scp(经过很长时间)得到以下错误
ssh_exchange_identification: read: Connection reset by peer
这可能是networking问题的一个标志 – ping不能解决所有问题。 最有可能的罪魁祸首是一个防火墙或NAT设备,正在放弃连接。
将-v详细输出添加到scp会给你更多的细节,可以给出更好的线索。 如果您想使用-v选项发送失败转移的输出,我可能会提供更准确的答案。
由同级重置的连接意味着 – 目标服务器重置/closures连接。 如果没有任何数据发送,或者如果它们不能正常工作,NAT设备将会这样做。
一些ISP将这样做为stream量整形的一种forms,以限制对等stream量 – 不幸的是,有些ISP也将其应用于SSH连接。 这可能不会成为商业联系的问题,但如果任何一方有住宅互联网连接,它可能适用。
在Windows上的SSH服务器也可能是片状的。 您不指定您使用哪一个,但不是所有这些工作都可靠。
在一个真实的怪诞的例子中,我有一个朋友有类似的问题 – 事实certificate,他的电缆调制解调器的固件中的一个错误,每两百万个数据包中有一个损坏。 很less有小的传输工作完美,但是大的传输每次都会死亡。
或者它可能只是普通的互联网问题。 互联网是不是100%可靠,永远不会。 有时连接失败,有时候包会丢失。 有时候,以太网电缆里面的小男人会罢工,不想携带数据包。 所以你需要一个可以处理的工具,并保持重试,直到成功。
rsync会是一个更好的select,只是因为它允许恢复。 这篇博客文章解释了如何设置rsync与恢复scp的地方。 如果有必要的话,你可以编写一个简单的shell脚本来检查rsync的退出代码,如果失败则继续重试。 这个其他的博客文章有这样一个脚本的例子。
什么别人好的替代scp? ,(考虑到我需要100%的稳定性)
考虑翻转它并使用Windows机器上的WinSCP来连接和获取Linux服务器上的文件。
Eytan,你没有提到,如果你能够在Windows机器上安装其他工具,如果需要encryption连接,在这里我的意见和build议:
我的build议
正如你所看到的,我喜欢cygwin,它在Windows上帮助我很多次…并且是我的Windows桌面上的“必备”工具。
祝你好运。