rsync从一个远程到另一个

rsync从一个远程到另一个

我有 3 台服务器。分别称为 A、B 和 C。B 和 C 是远程服务器,并且其 hosts.allow 中只有 A。

我需要做的是登录 A,然后通过 SSH 将文件从 B rsync 到 C。我想使用 rsync 因为许多文件同样存在于 B 和 C 上。

我可以尝试从 B -> A,然后从 A -> C 进行 rsync,但是 A 上的磁盘空间不够,因此我必须找到某种方式来“分块”文件,但我没有看到明显的分组方法,即使我这样做了,我也必须非常小心,从 A 的磁盘上删除文件,用下一个块重新启动该过程等。

那么我能否以某种方式在两台服务器之间进行 rsync?我认为我无法让任何人更改 hosts.allow :(

答案1

您应该能够从 A->B 和从 AC 设置 SSH 隧道,然后通过该隧道直接从 B->C 进行 rsync。

这会有点复杂,但基本上你要执行以下操作:

  1. 在 B 上的高端口(例如 20000)上设置 rsync 守护进程
  2. 使用 ssh 设置 LocalForward A:20000 到 B:20000
  3. 使用 ssh 设置从 C:20000 到 A:20000 的 RemoteForward
  4. 在 C 上,rsync -av /path rsync://localhost:20000/path

请记住,所有这些流量都将在 A 上进出网络并被加密,因此可能会非常慢。可能值得看看 B 是否实际上被 C 防火墙保护,您可能能够在高端口上运行 rsync 服务器并直接连接。

相关内容