我有 4 台具有名称的 Linux 机器A B C D我想从机器上同步一些内容A机器D, 但A 没有直接连接到 D但是A 连接到 B和B 连接到 C和C 连接至 D。
所以我想在 A 中运行一个脚本,将一些内容从 A 同步到 B,然后将 B 同步到 C,然后将 C 同步到 D。
答案1
用户可以使用 SSH Jump Hosts 建立从 A 到 D 的连接:https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts#Jump_Hosts_--_Passing_Through_a_Gateway_or_Two
答案2
解决方案是一个看起来吓人的 ProxyCommand,您应该将其添加到 `~/.ssh/config 文件中
我无法让它在这条消息中看起来不错,所以请从那里获取它https://hastebin.com/doqekujalu.tex
将这些行添加到计算机 A 上的 youruserhomedir/.ssh/config 文件(末尾)后,您可以使用 A+B+C 表示法来表示连接应走的路线:
rsync /some/file B+C+D:/remote/path/on_Dhost/
答案3
您需要在机器 B 和 C 上以守护进程模式运行 rsync。在守护进程模式下,您可以指定在执行模块之前运行的命令。
修改机器B:
user@B:/etc/rsyncd.conf
pre-xfer exec = rsync [options] C
然后从 C 到 D 进行菊花链:
user@C:/etc/rsyncd.conf
pre-xfer exec = rsync [options] D
从机器 A 到 B 执行 rsync...运行 rsync 到机器 B 到机器 C...然后到 D。
顺便说一下,“post-xfer exec”选项也可用。