![远程到远程文件同步,无需远程服务器之间的直接网络连接](https://linux22.com/image/569529/%E8%BF%9C%E7%A8%8B%E5%88%B0%E8%BF%9C%E7%A8%8B%E6%96%87%E4%BB%B6%E5%90%8C%E6%AD%A5%EF%BC%8C%E6%97%A0%E9%9C%80%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E7%9B%B4%E6%8E%A5%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5.png)
我想设置一个任务来同步两个远程服务器的文件。
过去我做过以下事情:
- SSH 到目的地
- SU 到拥有源公钥的用户
- 通过 SSH 使用 Rsync 将文件拉取到源
但是现在,源服务器已移至目标无权访问的 VPN,因此不再存在直接的“视线”,因此我现在采用以下方法:
- 从源到本地的 Rsync
- 从本地到目的地的 Rsync
然而,这样做的缺点是,可能会使用许多不同的本地机器来执行文件同步任务,因此创建新的本地副本的开销,甚至需要在本地机器上存储本地副本都是不可取的。
是否存在基于 Linux / OSX 的命令行工具可以执行上述操作而不需要本地副本?
答案1
如果源和目标都无法连接到另一端,则除了按照所述将文件复制到本地机器之外,没有其他方法可以复制文件。
但是,如果您在复制大量数据时遇到困难,可以执行以下操作:
- 使用几个命令复制文件和文件夹
rsync
。 - 将一个文件/文件夹复制到本地计算机后,立即将其复制到另一台远程计算机并将其删除。
这样,您可以减少本地存储文件所需的硬盘容量。此外,您还可以将这些内容写入脚本,并sleep
在恢复之前给本地机器一些时间来稳定下来。您可以使用 SSH 密钥来自动执行此操作,以避免提示输入密码。当然,这假设您不需要尽快将数据复制到另一端。
答案2
虽然不是真正的命令行工具,但您有能力设置 NFS 挂载吗?挂载源和目标文件系统应该可以满足您的需求。