使用rsync同步两台通过网桥的计算机

时间:2015-01-08 10:29:34

标签: linux ssh rsync

我想同步两台电脑(A和C)。不幸的是我无法通过ssh从计算机A连接到计算机C(没有人知道为什么)。这就是为什么我必须使用另一台被C识别的计算机(B)。

要同步A和C,我需要构建两个脚本:第一个是“sync_A_2_B.sh”(位于A中),“sync_B_2_C.sh”(位于B中)。其中每个都包含rsync指令。

从A到B:

rsync -av ~/BACK_UP/ username1@blablabla1:/home/BACK_UP/

从B到C:

rsync -av ~/BACK_UP/ username2@blablabla2:/home/BACK_UP/

这很完美,但有点耗时。这导致了我的问题。是否可以在位于A(“”sync_A_2_C.sh)的一个脚本中执行这些操作,以便程序认为B是桥接器?我已经绑定了以下内容,但它不起作用:

rsync -av ~/BACK_UP/ username1@blablabla1:/home/BACK_UP/
rsync -av username1@blablabla1:/home/BACK_UP/ username2@blablabla2:/home/BACK_UP/

然而,它不起作用,因为源和目标不能同时在远程桌面中。有没有可能轻松地执行我想要的?我应该使用其他工具吗?

1 个答案:

答案 0 :(得分:4)

你可以使用ProxyCommand选项来通过ssh转发流量。这意味着文件根本不必在机器B上存在。例如(从机器A到C):

rsync -av -e 'ssh -o "ProxyCommand ssh -W %h:%p username1@B"' ~/BACK_UP/ username2@C:/home/BACK_UP/

或者您可以将ProxyCommand放在〜/ .ssh / config文件中。类似的东西:

Host C
   Hostname C
   User username2
   ProxyCommand ssh -W %h:%p username1@B

有了这个,你应该能够从A到C透明地进行ssh