使用rsync通过多级SSH复制文件

时间:2015-11-08 20:23:59

标签: linux bash ssh rsync

我需要将大约4.2 GB的文件从local computer转移到server B。但是要ssh到服务器B,我需要ssh到server A

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

所以流程是这样的:

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吗?

2 个答案:

答案 0 :(得分:9)

您始终可以使用ssh和proxy命令,它允许您透明地传输文件。使用此配置(〜/ .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

数据将仅被路由&#34;中间主人。

答案 1 :(得分:0)

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

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

会让你开始。使用端口转发,您实际上使用 serverA 作为传递主机,因此您只需转移4.2G一次。