从技术上讲,我们可以创建一个名为的本地目录[email protected]:
(这是一个有效的 UNIX 路径,不是吗?),那么rsync
内部如何知道是否:
rsync test/ [email protected]:/test/
方法:
目的地是当地的路径
[email protected]:/test/
(即)./[email protected]:/test/
目的地是远程主机
[email protected]:/test/
?
出于好奇,rsync
使用的决策规则是什么?
答案1
这相当复杂。
中建议的解决方案rsync:文件名中的冒号似乎一般情况下都有效,但也有很多可能的极端情况。
示例:rsync 如何知道目标是远程还是本地?它可以是目录名称中包含和 的 本地路径。 或者它可能是一个带有用户名(奇怪的 Unix 用户名,但可能!尝试一下!)、主机和路径的远程主机。rsync src ./[email protected]:/test/
./[email protected]:/test/
:
@
./hello
useradd
b.com
/test/
这里是 OpenSSH 实现中解析 URI 的代码scp
,值得一读。
IETF 草案中对规则进行了解释https://datatracker.ietf.org/doc/html/draft-ietf-secsh-scp-sftp-ssh-uri-04