为什么不能使用两个遥控器进行 rsync?

loo*_*bee 44 rsync remote

serverfault 用户注意:hynekcer 的四条评论在这里回答了这个封闭的问题。然后它在其他评论中被很好地接受为一个定期回答的问题。现在正在投票决定重新开放。


当源和目标都是远程时,rsync 会抱怨:

The source and destination cannot both be remote. rsync error: syntax or usage error (code 1) at main.c(1156) [Receiver=3.0.7]

让 rsync 做到这一点是否存在不可逾越的技术障碍?或者这只是一个尚未实施的情况?在内存中创建一个本地缓冲区来调解两个遥控器之间的传输似乎相对容易,同时保存散列和数据。

小智 8

为什么不尝试连接到远程机器并从那里开始传输。如果您使用 ssh-keys,您可以使用代理通行证来管理您的身份验证。

ssh -A remotehostA rsync /remote/file/on/host/a remoteHostB:/destination/
Run Code Online (Sandbox Code Playgroud)

此命令将使您登录到 remoteHostA 并从那里运行 rsync。

  • 这涉及到一些安全方面的考虑。查看编辑 (5认同)
  • 此外,如果您在两个系统之间没有直接访问权限,那将不起作用……如果获得直接访问权限需要等待两周,以便安全部分可能正确实施防火墙规则…… (4认同)

Kar*_*box 6

scp -3r <remote src> <remote dest>
Run Code Online (Sandbox Code Playgroud)

这样做没有问题。

  • scp 不做增量,AFAIK,在这种情况下非常需要它。有关我的编辑的更多详细信息 (4认同)
  • 顺便说一句,如果您想成为主机之间的代理,scp 必须使用选项 -3 (4认同)
  • 不幸的是 scp 缺乏 rsync 的重要功能,例如:不跨文件系统的选项(例如安装在用户文件夹中的网络驱动器)、存档模式(其中“保留符号链接、设备、属性、权限、所有权等”)等... (2认同)