使用rsync同步两台电脑

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

要同步A和CI构build两个脚本:第一个“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/ 

然而,这是行不通的,因为源和目标不能同时在远程桌面。 有没有可能轻易地执行我想要的? 我应该使用另一种工具吗?

您可以使用ProxyCommand选项来通过B转发流量。这意味着这些文件根本不必永远住在机器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