2013-07-04 96 views
0

好吧,所以我有一个shell脚本,用于通过而不是ssh将一些文件传输到远程主机。减少SSH连接

然而,除了传递我需要事先和事后做一些家务管理,它涉及到一个额外的ssh与命令,并scp呼叫转移不包括在rsync传递一些额外的数据(我产生这些数据在传输过程中发生)。

正如您可以想象的那样,目前会导致很多ssh会话开始和停止,尤其是因为管理操作实际上非常快(通常)。我已经在主机上进行了验证,证明这是由于许多SSH连接和断开连接而显示的,虽然与实际传输相比很小,但看起来很浪费。

所以我想知道的是,有没有办法,我可以打开一个ssh连接,然后将其连接,直到我完成它?即 - 我最初的ssh家务操作将使其连接处于打开状态,以便当rsync(和之后的scp)运行时,它可以使用之前打开的连接来完成它的工作。

在shell脚本中甚至可以这样做吗?如果是这样,任何关于如何处理错误的指针(即 - 确保连接在不需要时关闭)也将受到赞赏!

回答

0

这是可能的。最简单的方法甚至不需要任何编程。请参阅https://unix.stackexchange.com/questions/48632/cant-share-an-ssh-connection-with-rsync - 总体思路是使用SSH连接重用来让您的多个SSH共享一个会话,然后让rsync加入。

困难的方法是使用libssh2并自行编程一切。这将会有更多的工作,而且你的情况似乎没有什么可推荐的。对于更复杂的场景,这很有用。