这让我相信我最好的行动方案是使用我的机器作为这两台机器之间的ssh桥的中介。
我的初始解决方案是使用脚本系列的 scp -3r 命令将目录从A:A移动到B:B。但是,即使使用arcfour并具有稳定的网络连接,此过程也非常缓慢且易碎。
Rsync能够使用 - partial 和 - append-verify 在停止时恢复进程,这样我就可以安全地在我的任务上执行此任务机器,让它运行几天,需要时自动重启。
我的问题是:什么是等同于 scp -3 的rsync?我尝试的解决方案将通过运行
进行调整*rsync *???* user@A:path/to/big/files otheruser@B:path/to/desired/location -F /path/to/specific/.ssh/config
或者,根据我的约束,你能否建议一种方法来完成这种转移?
最后的方法是通过sshfs安装这些系统并尝试制定一组更合适的命令(更慢,更慢)
全部谢谢
答案 0 :(得分:1)
您可以使用ssh来设置隧道,以便rsync做正确的事。
在您的本地计算机上:
ssh -M -R 9999:serverB:22 serverA rsync -a --rsh "ssh -p 9999" /path/to/big/files/ localhost:/path/to/desired/location/
其中" 9999"是你喜欢的任何端口号,只要它在两个地方匹配,并且" 22"是serverB上的SSH端口号(通常为22)。
-R
选项执行反向隧道,将通过本地计算机连接到serverA:9999
的任何程序路由到serverB:22
。 (实际上,除非您添加"绑定地址",访问仅限于在serverA上运行的本地程序,连接到localhost:9999
,因此它是安全的。)
--rsh "ssh -p 9999"
选项告诉rsync使用带有非标准端口号(9999)的ssh。
-M
选项可能不是必需的,但它可以解决SSH连接共享可能出现的问题。