Rsync 相当于 scp -3

Chr*_*ell 5 ssh rsync scp

  • 网络 A 的远程服务器 A 上的大文件
  • 大文件需要转到网络 B 的远程服务器 B(只能通过 VPN 访问)
  • 我可以使用 rsa 密钥(为了方便起见,在 ssh 配置文件中配置)和 VPN 客户端从我的计算机连接到两台计算机。如果没有对每台计算机进行冗长的官僚过程,我就无法更改任一远程计算机上使用的密钥。

这让我相信我最好的做法是使用我的机器作为这两台机器之间 ssh 桥的中介。

我最初的解决方案是使用一系列脚本化的scp -3r命令将目录从 A:A 移动到 B:B。然而,即使使用 arcfour 并具有稳定的网络连接,此过程也非常缓慢且脆弱。

Rsync 能够使用--partial--append-verify在进程停止时恢复进程,这样我就可以安全地在我的计算机上执行此任务,并让它运行几天,并在需要时自动重新启动。

我的问题是: rsync 相当于scp -3是什么?我尝试的解决方案将通过运行进行调整

*rsync *???* user@A:path/to/big/files otheruser@B:path/to/desired/location -F /path/to/specific/.ssh/config
Run Code Online (Sandbox Code Playgroud)

或者,鉴于我的限制,您能否建议一种完成此转移的方法?

最后的方法是通过 sshfs 安装这些系统并尝试制定一组更合适的命令(慢得多)

谢谢大家

ams*_*ams 2

您可以使用 ssh 设置隧道,以便 rsync 执行正确的操作。

在您的本地计算机上:

ssh -M -R 9999:serverB:22 serverA rsync -a --rsh "ssh -p 9999" /path/to/big/files/ localhost:/path/to/desired/location/
Run Code Online (Sandbox Code Playgroud)

其中“9999”是您喜欢的任何端口号,只要它在两个位置都匹配即可,“22”是 serverB 上的 SSH 端口号(通常为 22)。

-R选项执行反向隧道,将serverA:9999通过本地计算机连接的任何程序路由到serverB:22。(实际上,除非您添加“绑定地址”,否则访问仅限于在 serverA 上运行、连接到 的本地程序localhost:9999,因此是安全的。)

--rsh "ssh -p 9999"选项告诉 rsync 使用带有非标准端口号 (9999) 的 ssh。

-M选项可能不是必需的,但它可以避免 SSH 连接共享可能出现的问题。