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

标签 linux ssh rsync

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

为了同步 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 是一座桥?我绑定(bind)了以下内容,但它不起作用:

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

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

最佳答案

您可以将 ProxyCommand 选项用于 ssh 以通过 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

关于linux - 使用 rsync 同步通过网桥的两台计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837919/

相关文章:

rsync - 如何限制 Rsync 更新时间戳

c - 使用 pipe、fork 和 exec 后程序挂起

c - 提交我自己构建的生物卡住了

ruby-on-rails - heroku rails - 所有命令都给出 "No account specified"

python - 使用 pexpect 时关闭 ssh 连接的正确方法?

docker - 从kubernetes/Docker中的Pod/容器执行,通过不包含预安装bash的镜像创建

macos - 通过 OSX ssh rsync 保留别名

linux - rsync后没有传输任何文件

c - 在linux中检索EBP寄存器的内容

c - 如何使用semget实现sem_open