用rsync在多个级别的SSH上复制文件

我需要将4.2 GB的文件从local computerserver B 但是ssh进入服务器B,我需要SSH入server A

目前,我正在将文件从local computer复制到服务器A,然后从server A复制到server B

所以stream程是这样的:

rsync -avz --del ~/Desktop/abc/ <my-user-name>@<server-A>:~/abc

rsync -avz --del ~/Desktop/abc/ <my-user-name>@<server-B>:~/abc

这是慢的,并且复制4.2 gb的数据而不是一个!

我可以通过rsync从本地计算机传输文件到server B吗?

你总是可以使用ssh与代理命令,它允许你透明地传输文件。 使用这个配置(〜/ .ssh / config):

 Host <server-A> User <user-A> Host <server-B> User <user-B> ProxyCommand ssh <server-A> -W %h:%p 

你可以调用你的rsync:

 rsync -avz --del ~/Desktop/abc/ <server-B>:~/abc 

数据将只在中间主机上“路由”。

你想要的是使用端口转发服务器Bssh / rsync端口(通常是端口22) 转发服务器A上的备用端口,因此当您调用rsync -e "ssh -p altport" serverA:/sourcedir /destdir ,你实际上是从serverB调用rsync。

在StackExchange和其他网站上有很多好的howtos。 例如:

  • 如何将一个端口从一台机器转发到另一台机器? 要么
  • 如何使用Iptables通过Linux网关转发端口

会让你开始。 使用端口转发,你基本上使用serverA作为传递主机,所以你只需要转移你的4.2G一次。